Heim > Artikel > Backend-Entwicklung > Wie greife ich auf Friend-Funktionen zu, die in einer Klasse in C definiert sind?
Zugriff auf in der Klasse definierte Friend-Funktionen
In C werden Friend-Funktionen innerhalb von Klassen deklariert, können aber auf private und geschützte Mitglieder der Klasse zugreifen. Betrachten Sie den folgenden Codeausschnitt:
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun3() { std::cout << "I'm here3" << std::endl; }</code>
Der Zugriff auf die Funktion fun(A) funktioniert einwandfrei, da sie über einen Parameter vom Typ A verfügt, der es der argumentabhängigen Suche ermöglicht, sie zu finden. Es gibt jedoch ein Problem beim Zugriff auf die globalen Funktionen fun2() und fun3().
Die Deklaration von fun2 innerhalb der Klasse macht es zu einer Friend-Funktion, deklariert sie jedoch nicht im globalen Bereich. Folglich gilt beim Zugriff auf fun2() außerhalb der Klasse:
Um dieses Problem zu beheben, besteht der richtige Ansatz darin, alle Freundfunktionen außerhalb der Klasse zu definieren und sie zu expliziten Freunden der Klasse zu machen:
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun(A a) { std::cout << "I'm here" << std::endl; } void fun2() { std::cout << "I'm here2" << std::endl; } void fun3();</code>
Definieren Friend-Funktionen ermöglichen auf diese Weise den Zugriff sowohl innerhalb als auch außerhalb der Klasse.
Das obige ist der detaillierte Inhalt vonWie greife ich auf Friend-Funktionen zu, die in einer Klasse in C definiert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!