„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum muss eine Template-Klasse eine Friend-Template-Klasse mit einem anderen Template-Parameter deklarieren?

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

Veröffentlicht am 13.11.2024
Durchsuche:207

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 Friend-Vorlage als BT statt BT zu deklarieren. Eine Untersuchung dieses Verhaltens führt zu einem gründlichen Verständnis der Klassenvorlagen und Freundbeziehungen.

Verschachtelte Vorlagen und Shadowing

Zunächst versuchen Sie, die Freundvorlage als template Friend-Klasse zu deklarieren 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.

Definieren von Freundschaftsbeziehungen

Wenn Sie template Friend Class BT; deklarieren, stellen Sie eine Freundschaftsbeziehung zwischen BT und BE her, unabhängig davon Vorlagenargumente von BT. Dies bedeutet, dass jede Instanziierung von BT auf die privaten Mitglieder jeder Instanziierung von BE zugreifen kann.

Wenn Sie die Friend-Beziehung 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 friend class bar;

In Ihrem speziellen Fall deklarieren Sie Friend Class Bar; innerhalb der BE-Klasse sollte ausreichen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3