Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"name" : nieprawidłowa deklaracja szablonu znajomego
Uwagi
Deklarowanie znajomego specjalizacji szablonu klasy jest nieprawidłowe. Nie można zadeklarować jawnej lub częściowej specjalizacji szablonu klasy i w tej samej instrukcji zadeklarować znajomą tę specjalizację. Symbol zastępczy nazwy identyfikuje nieprawidłową deklarację.
Aby poprawić ten błąd
Nie deklaruj znajomego specjalizacji szablonu klasy.
Jeśli jest to odpowiednie dla aplikacji, zadeklaruj znajomego szablonu klasy lub zadeklaruj znajomego określonej częściowej lub jawnej specjalizacji.
Przykład
Poniższy przykład kodu kończy się niepowodzeniem, ponieważ deklaruje znajomą częściową specjalizację szablonu klasy.
// 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>;
};