verschachtelte Klasse als friend deklarieren
-
Hallo Zusammen,
ich habe eine Klasse Iterator in einer Klasse Graph. Beide Klassen sollen auf die privaten Elemente der Kasse Node zugreifen. Daher habe ich Graph als friend von Node deklariert. Ich hatte gedacht, dass Itertor als Bestandteil von Graph dann automatisch auch ein "Freund" von Node wäre, aber ich bekam die Fehlermeldung, dass Iterator nicht auf die privaten Elemente von Node zugreifen darf. Daher wollte ich Iterator auch als friend deklarieren. Wenn Graph vor Node definiert wird habe ich kein Problem aber wenn ich von Graph nur eine Vorabdeklaration mache und nach Node definiere bekomme ich eine Fehlermeldung. Rein theoretisch müsste dass aber doch gehen, oder? Wie wäre dann die richtige Syntax?
Hier mal der komprimierte Quellcode:
class Node; class Graph; //class Graph::Iterator; // error C2027; Verwendung des undefinierten Typs Graph class Node { friend Graph; friend Graph::Iterator;//hier kommt die Fehlermeldung: //error C2027; Verwendung des undefinierten Typs Graph }; class Graph { public: class Iterator {}; private: Node *begin; };
Gruß,
Beccy
-
Wie wärs mit:
class Node; class Graph { public: class Iterator {}; private: Node *begin; }; class Node { friend Graph; friend Graph::Iterator;//hier kommt die Fehlermeldung: //error C2027; Verwendung des undefinierten Typs Graph };
Das müsste gehen!
mfg
-
ja so funktioniert es und so mache ich es auch zur Zeit.
Ich wahr halt nur neugierig, ob es nicht auch eine Möglichkeit gibt, ea andersherum zu machen. Müsste doch eigentlich möglich sein?