Eine auf Vorlagen basierende Struktur oder Klasse als Freund deklarieren
In der C-Programmierung ist es möglich, eine auf Vorlagen basierende Struktur oder Klasse als Freund zu deklarieren zu einer anderen Klasse und ermöglicht so effektiv den Zugriff auf private Mitglieder. Bei einigen Compilern, wie z. B. VC8, können jedoch bei der Implementierung dieser Funktion Fehler auftreten.
Falsche Syntax:
Der folgende Code versucht, eine auf Vorlagen basierende Struktur foo als zu deklarieren Freund aller anderen Instanziierungen von foo:
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
Dies führt jedoch dazu, dass Fehler:
error C3857: 'foo<T>': multiple template parameter lists are not allowed
Korrekte Syntax:
Um eine Vorlagenstruktur oder -klasse korrekt als Freund zu deklarieren, verwenden Sie die folgende Syntax:
template <typename> friend class foo;
Dadurch können alle Template-Instanziierungen von foo wie gewünscht miteinander befreundet sein. Daher sollte der korrekte Code lauten:
template <typename T> struct foo { template <typename> friend class foo; private: // ... };
Das obige ist der detaillierte Inhalt vonWie deklariere ich eine vorlagenbasierte Struktur oder Klasse als Freund in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!