Heim > Backend-Entwicklung > C++ > Hauptteil

Warum muss eine Template-Klasse eine Friend-Template-Klasse mit einem anderen Template-Parameter deklarieren?

Linda Hamilton
Freigeben: 2024-11-22 08:49:10
Original
486 Leute haben es durchsucht

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

Vorlagenklasse mit Friend-Vorlagenklasse: Entschlüsselung der Mechanik

In diesem Szenario definieren Sie eine Binärbaum-Klassenvorlage (BT) und eine Klassenvorlage (BE). ), das ein Element des Baums darstellt. Sie stoßen auf eine besondere Anforderung, die Freundevorlage als BT zu deklarieren. anstelle von BT. Eine Untersuchung dieses Verhaltens führt zu einem gründlichen Verständnis der Klassenvorlagen und Freundesbeziehungen.

Verschachtelte Vorlagen und Shadowing

Zunächst versuchen Sie, die Freundesvorlage als Vorlage zu deklarieren. Freund Klasse BT;. Dies ist jedoch verboten, da die Template-Parameter verschachtelter Templates nicht den gleichen Namen haben dürfen. Verschachtelte Vorlagen müssen unterschiedliche Vorlagenparameternamen verwenden.

Freundbeziehungen definieren

Wenn Sie template Friend-Klasse BT; stellen Sie eine Friend-Beziehung zwischen BT und BE her, unabhängig von den Vorlagenargumenten von BT. Dies bedeutet, dass jede Instanziierung von BT auf die privaten Mitglieder jeder Instanziierung von BE zugreifen kann.

Wenn Sie die Freundschaftsbeziehung nur auf die Instanziierungen von BT beschränken möchten, die dasselbe Vorlagenargument wie BE verwenden, sollten Sie dies deklarieren den Freund wie folgt:

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

In Ihrem speziellen Fall wird die Kategorie „Freund“ für gesperrt erklärt; innerhalb der BE-Klasse sollte ausreichen.

Das obige ist der detaillierte Inhalt vonWarum muss eine Template-Klasse eine Friend-Template-Klasse mit einem anderen Template-Parameter deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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