Partilhar via


Erro do compilador C3772

"nome" : declaração de modelo de amigo inválido

Observações

É inválido declarar um amigo de uma classe de especialização de modelo. Não é possível declarar uma especialização explícita ou parcial de um modelo de classe e, na mesma declaração, declarar um amigo dessa especialização. O espaço reservado para nome identifica a declaração inválida.

Para corrigir este erro

  • Não declare amigo de uma especialização de modelo de classe.

  • Se apropriado para sua inscrição, declare um amigo do modelo de classe ou declare um amigo de uma especialização parcial ou explícita específica.

Example

O exemplo de código a seguir falha porque declara um amigo de uma especialização parcial de um modelo de classe.

// c3772.cpp
// compile with: /c

// A class template.
    template<class T> class A {};

// A partial specialization of the class template.
    template<class T> class A<T*> {};

// An explicit specialization.
    template<> class A<char>;

class X {
// Invalid declaration of a friend of a partial specialization.
    template<class T> friend class A<T*>; // C3772

// Instead, if it is appropriate for your application, declare a
// friend of the class template. Consequently, all specializations
// of the class template are friends:
//    template<class T> friend class A;
// Or declare a friend of a particular partial specialization:
//    friend class A<int*>;
// Or declare a friend of a particular explicit specialization:
//    friend class A<char>;
};

Consulte também

Templates
Especialização de Templates