© Copyright International Business Machines Corporation 2006. Todos os direitos reservados. Direitos Restritos aos Usuários do Governo dos Estados Unidos - Uso, duplicação ou divulgação restritos pelo documento GSA ADP Schedule Contract com a IBM Corp.
Modelos C++ normais podem ser visualizados e editados. No entanto, especializações de modelos e especializações parciais não são suportadas devido à falta de suporte no CDT. A UI atual não desativa as entradas de visualização de especializações completas e parciais... ela apenas não faz nada, por exemplo:
template <classe T> class MyVec {
T* data;
int length;
};Esse é um modelo normal. Sua visualização será bem-sucedida.
template <> class MyVec<bool> {
unsigned int * data;
int length;
};Essa é uma especialização do modelo. Sua visualização falhará.
A edição de campos e métodos não é suportada para tipos C++ anônimos, por exemplo:
class c1 {
class {int j;} abc; // O tipo de membro abc é um tipo anônimo, pois a classe de definição não recebeu nenhum nome de tipo
};Aqui, o tipo do campo abc é uma classe anônima.
Atualmente, a visualização em C++ não consegue manipular os deltas de alteração de tipos anônimos quando operações de edição, como inclusão ou exclusão de campos, métodos e literais enum são executadas no diagrama. Portanto, a funcionalidade de edição de visualização em C++ é desativada para tipos anônimos. A recomendação geral é trabalhar com tipos nomeados o máximo possível para que os recursos de edição estejam disponíveis. Se isso não for possível, o código deverá ser editado diretamente.
A edição de campos e métodos de tipos C++ nomeados que estão aninhados em espaços de nomes anônimos não é suportada, por exemplo:
namespace { // espaço de nomes anônimo
class c1 {};
}Aqui, a classe c1 é um tipo nomeado aninhado em um espaço de nomes anônimo.
Atualmente, a visualização em C++ não consegue manipular as alterações para tipos nomeados aninhados em espaços de nomes anônimos quando operações de edição, como inclusão ou exclusão de campos, métodos e literais enum são executadas no diagrama. Conseqüentemente, os recursos de edição de visualização em C++ são desativados para tipos de nomes aninhados em espaços de nomes anônimos. A recomendação geral é trabalhar com espaços de nomes nomeados o máximo possível para que os recursos de edição estejam disponíveis. Se isso não for possível, o código deverá ser editado diretamente.
As definições de tipo com nomes qualificados não são suportadas para a visualização em C++, por exemplo:
namespace n1 {
class c1; // Declaração de redirecionamento da classe c1
}
class n1::c1{ int i;}; // Definição da classe c1 utilizando o nome completo.A visualização em C++ não pode lidar com as definições acima e a visualização para a classe c1 falha.
Solução alternativa: Utilize o seguinte equivalente do código acima:
namespace n1 {
class c1{ int i;};
}
Às vezes, as alterações no código, incluindo a renomeação de elementos ou a inclusão/exclusão de membros em tipos, podem não ser refletidas nos diagramas de visualização. As causas mais comuns para isso são notificações de alteração inadequadas ou a falta delas no CDT.
Solução alternativa: Faça alterações falsas em um arquivo e salve o código para mais uma vez. Além disso, às vezes, o "Índice C/C++" criado pelo CDT pode não estar consistente com o código. Uma verificação rápida no índice de C/C++ (Mostrar Visualização > Outro > C/C++ > Índice C/C++) para ver se algumas entradas estão faltando pode dar alguma pista de que a atualização do índice seja um problema. Nesses casos, a reconstrução do índice no projeto pode ser útil. No entanto, a reconstrução do índice pode demorar muito para projetos grandes e deve ser utilizada criteriosamente. Para mostrar elementos relacionados em um diagrama, selecione a opção Indexador Completo de C/C++.