Regras e recomendações
8 - Class Templates

Recomendações:
  • 39: Não tente criar uma instância de uma class template usando um tipo para o qual não exista uma função membro definida na class template
  • 40: Evite múltiplas definições de funções sobrecarregadas em conjunção com instanciação de class template

Não é possível, para o C++, identificar os requerimentos de tipos de argumentos para class templates ou para function templates. Isso pode resultar em que o tipo escolhido pelo usuário não seja compatível com a interface, conforme definido pela template. Por exemplo, uma class template pode requerer que um tipo de argumento tenha um operador de comparação definido.

Um outro problema com tipos de dados em templates pode advir de funções sobrecarregadas. Se uma função for sobrecarregada, pode haver um conflito se o tipo do elemento aparecer explicitamente em alguma das sobrecargas. Após a instanciação, pode haver duas funções que tenham, por exemplo, o tipo int como um argumento. O compilador pode reclamar, mas há o risco de que o projetista da classe não note. Nos casos em que haja o risco de múltiplas definições de funções membro, tal fato deve ser criteriosamente documentado.

Exemplo 34: Problema quando se usa tipos parametrizados (Cfront 3.0 ou outros compiladores)

  template  
  class Conflict
  {
    public:
      void foo( int a );
      void foo( ET a );    // What if ET is an int or another integral type?
               // The compiler will discover this, but ...
  };
Topo Índice

| Home | Bookmarks | Universidades | Para Saber mais | Universidades | WEB Directory | Mapa do site |