Visualização em C++ - Notas sobre o Release

© 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.

Notas sobre o Release

1.0 Limitações
   1.1 Suporte à Especialização de Modelos
   1.2 Edição de Campos e Métodos de Tipos C++ Anônimos
   1.3 Edição de Campos e Métodos de Tipos C++ Aninhados
2.0 Problemas Conhecidos e Soluções Alternativas
   2.1 Definições de Tipo com Nomes Qualificados
   2.2 Atualizando Diagramas com Alterações de Código e Índice

1.0 Limitações

1.1 Suporte à Especialização de Modelos

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á.

1.2 Edição de Campos e Métodos de Tipos C++ Anônimos

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.

1.3 Edição de Campos e Métodos de Tipos C++ Aninhados

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.

2.0 Problemas Conhecidos e Soluções Alternativas

2.1 Definições de Tipo com Nomes Qualificados

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;};
}

2.2 Atualizando Diagramas com Alterações de Código e Índice

À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++.