Heim > Artikel > Backend-Entwicklung > Wie definiere ich Freundschaftsbeziehungen in Vorlagenklassen mit unterschiedlichen Vorlagenargumenten?
Eintauchen in Klassenvorlagen mit Vorlagenklassenfreunden
Beim Definieren einer Binärbaumklasse (BT) und ihrer Elementklasse (BE). erforderlich, um eine Freundschaftsbeziehung aufzubauen, damit BT auf die privaten Mitglieder von BE zugreifen kann. Es ist jedoch wichtig, die zugrunde liegenden Mechanismen zu verstehen, um die Beziehung richtig zu definieren.
Ursprünglich haben Sie versucht, die Freundschaftsbeziehung als Vorlage
Stattdessen sollten Sie unterschiedliche Vorlagenparameternamen verwenden, wie zum Beispiel:
template<class T> class BE { template<class U> friend class BT; };
Diese Deklaration gibt an, dass jede BT-Klasse unabhängig von ihrer Vorlage Argumente, ist ein Freund aller BE-Klassen mit passenden Vorlagenargumenten.
Betrachten Sie die folgenden Beispiele, um die verschiedenen Arten von Freundschaftsbeziehungen weiter zu verdeutlichen:
template<typename T> struct foo { template<typename U> friend class bar; };
In diesem Fall ist bar ein Freund von foo, unabhängig von den Vorlagenargumenten von bar. Jede Spezialisierung von bar wäre ein Freund jeder Spezialisierung von foo.
template<typename T> struct foo { friend class bar<T>; };
Hier ist bar nur ein Freund von foo, wenn sein Vorlagenargument mit dem von foo übereinstimmt. Also nur bar
In Ihrem spezifischen Szenario ist die Freundesklasse bar
Das obige ist der detaillierte Inhalt vonWie definiere ich Freundschaftsbeziehungen in Vorlagenklassen mit unterschiedlichen Vorlagenargumenten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!