Heim > Backend-Entwicklung > C++ > Warum unterschiedliche Vorlagenparameter für Friend-Klassen in verschachtelten Vorlagen verwenden?

Warum unterschiedliche Vorlagenparameter für Friend-Klassen in verschachtelten Vorlagen verwenden?

Mary-Kate Olsen
Freigeben: 2024-11-14 20:50:02
Original
937 Leute haben es durchsucht

Why Use Different Template Parameters for Friend Classes in Nested Templates?

Friend-Klassenvorlagen in verschachtelten Vorlagen

Betrachten Sie das Szenario der Definition einer Klassenvorlage für einen Binärbaum (BT) und ein Element innerhalb des Baums (BE). Warum ist es notwendig, beim Deklarieren der Freundschaft zwischen diesen Klassen einen anderen Vorlagenparameter für die Freundklasse als für die enthaltende Klasse zu verwenden?

In C können sich Vorlagenparameter nicht gegenseitig überschatten. Im Kontext verschachtelter Vorlagen müssen die Vorlagenparameter der inneren Vorlage andere Namen haben als die Vorlagenparameter der äußeren Vorlage.

Zum Beispiel im folgenden Code:

template<class T> class BE {
    T *data;
    BE *l, *r;
public:
    template<class U> friend class BT;
};
Nach dem Login kopieren

Zur Unterscheidung vom T-Template-Parameter der BE-Klasse dient der Template-Parameter U der Friend-Klasse BT. Dies gibt an, dass BT ein Freund von BE ist, unabhängig von den Vorlagenargumenten von BT.

Wenn Sie die Friend-Klasse jedoch wie folgt deklarieren:

template<class T> friend class BT;
Nach dem Login kopieren

Dies impliziert, dass jede bestimmte Instanziierung von BT dies ist ein Freund einer bestimmten Instanziierung von BE. Um eine spezifischere Freundschaft anzugeben, können Sie die folgende Syntax verwenden:

template<typename T>
struct foo {
    friend class bar<T>;
};
Nach dem Login kopieren

Dies zeigt an, dass bar nur dann ein Freund von foo ist, wenn das Vorlagenargument von bar mit dem Vorlagenargument von foo übereinstimmt. In Ihrem Fall verwenden Sie die Freundesklasse bar; sollte ausreichen, um die gewünschte Freundschaftsbeziehung aufzubauen.

Das obige ist der detaillierte Inhalt vonWarum unterschiedliche Vorlagenparameter für Friend-Klassen in verschachtelten Vorlagen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage