Vorgefertigte Klasse oder Struktur als Freunddeklaration
Beim Versuch, eine vorgefertigte Struktur oder Klasse als Freund zu deklarieren, können Kompilierungsfehler auftreten. Betrachten Sie beispielsweise den folgenden Code:
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
Dieser Code kann nicht kompiliert werden und es wird eine Fehlermeldung angezeigt, die darauf hinweist, dass mehrere Vorlagenparameterlisten nicht zulässig sind. Sie möchten jedoch immer noch, dass alle möglichen Instanziierungen der foo-Vorlagenstruktur Freunde von foo
Lösung
Um dies zu erreichen, können Sie die folgende Deklaration verwenden:
template <typename> friend class foo
Diese Deklaration bedeutet, dass Alle Template-Instanziierungen der Klasse foo sind Freunde aller anderen Template-Instanziierungen der Klasse foo-Klasse.
Zusätzlicher Hinweis
Die Deklaration
template <typename> friend struct foo;
funktioniert auch, macht aber alle Template-Instanziierungen der foo-Struktur zu Freunden gegenseitig. Dies ist wahrscheinlich das von Ihnen beabsichtigte Verhalten. Es ist jedoch zu beachten, dass Friend-Deklarationen und -Vorlagen eine etwas komplexe Syntax haben.
Das obige ist der detaillierte Inhalt vonWie deklariere ich eine als Vorlage erstellte Klasse oder Struktur als Freund?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!