In folgendem Code:Multiple Ebene Freundschaft
class B {
int x;
int y;
};
class A {
friend class Other;
friend class A;
int a;
B* b;
public:
A(){ b = new B();}
};
struct Other {
A a;
void foo() {
std::cout << a.b->x; // error
}
};
int main() {
Other oth;
oth.foo();
}
Die angegebene Zeile nicht mit:
t.cpp:22:19: error: 'x' is a private member of 'B'
std::cout << a.b->x;
^
t.cpp:7:5: note: implicitly declared private here
int x;
Warum Freundschaft funktioniert nicht, wenn sie von Klassenmitglied zu anderem Klassenmitglied bezieht?
Nun, 'Other' ist kein 'Freund' von' Klasse B', daher kann dort nicht auf den privaten 'B :: x' zugegriffen werden. –
Wenn eine Antwort für Sie funktioniert hat, [markieren Sie sie als akzeptiert] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Wenn dies nicht der Fall war, fügen Sie einen Kommentar hinzu, in dem Sie um Klärung oder Korrekturen gebeten werden (falls erforderlich). – Nacho