„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 kann ich Inline-Friend-Funktionen nicht direkt aus ihrer definierenden Klasse heraus aufrufen?

Warum kann ich Inline-Friend-Funktionen nicht direkt aus ihrer definierenden Klasse heraus aufrufen?

Veröffentlicht am 22.12.2024
Durchsuche:185

Why Can\'t I Directly Call Inline Friend Functions from Within Their Defining Class?

Sichtbarkeitsbereich von Inline-Friend-Funktionen

Obwohl Inline-Friend-Funktionen innerhalb einer Klasse definiert werden, geht ihr tatsächlicher Umfang über die Grenzen der Klasse hinaus. Der C-Standard schreibt vor, dass sich der Name einer Inline-Friend-Funktion auf eine Funktion bezieht, die im nächstgelegenen umschließenden Namespace-Bereich deklariert ist.

Auf diese deklarierte Funktion kann jedoch nicht durch unqualifizierte oder qualifizierte Suche zugegriffen werden, bis eine passende Deklaration innerhalb dieses Namespaces bereitgestellt wird Umfang. Folglich führen direkte Aufrufe der Friend-Funktion aus der Klasse selbst, dem umschließenden Bereich oder Mitgliedsfunktionen zu Fehlern.

Diese Einschränkung ergibt sich aus der Tatsache, dass die Friend-Funktion in der Klasse deklariert wird, ohne eine zu überschreiben oder neu zu definieren vorhandener Funktionsname. Daher erkennt der Compiler die Funktion in der Klasse oder dem umschließenden Namespacebereich erst, wenn er auf eine explizite Deklaration in diesem Namespace trifft.

Um auf die Inline-Friend-Funktion zuzugreifen, können Sie die argumentabhängige Suche (ADL) verwenden. . ADL ermöglicht dem Compiler die Suche nach der Funktion basierend auf den Typen der im Aufruf verwendeten Argumente. Dieser Ansatz entspricht dem Prinzip, dass die Funktion als „bezogen“ auf den als Argument übergebenen Typ betrachtet wird.

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