Megosztás a következőn keresztül:


C3772 fordítóhiba

"name" : érvénytelen barátsablon-deklaráció

Megjegyzések

Érvénytelen egy osztálysablon-specializáció barátjának deklarálása. Az osztálysablon explicit vagy részleges specializációját, valamint a specializáció barátját nem deklarálhatja ugyanabban a nyilatkozatban. A névhelyőrző azonosítja az érvénytelen deklarációt.

A hiba kijavítása

  • Ne deklarálja az osztálysablon-specializáció egyik barátját.

  • Ha az alkalmazásnak megfelelő, deklarálhatja az osztálysablon egyik barátját, vagy deklarálhatja egy adott részleges vagy explicit specializáció barátját.

Example

Az alábbi példakód meghiúsul, mert egy osztálysablon részleges specializációjának egy barátját deklarálja.

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

Lásd még

Sablonok
Sablon specializáció