Instanz von Klasse A nur über B erzeugen?
-
Konstellation:
class A{ public: class B{ B(...){...} }; B& func(){ return B(...); } };ein Objekt von B soll nur über A erzeugbar sein?? wie mach ich das?
A::B o= A.func(); //Ja A::B o(...); //Nein
-
Die einfachste Lösung: Mach die Konstruktoren von B private und gib A friend-Zugriff.
-
gute idee.. Funktioniert..:)
Und was wäre ne Kompliziertere Lösung?
-
Über kompliziertere Lösungen denke ich normalerweise nur nach, wenn mir nichts einfaches einfällt

-
hehe.. "friend" deklarationen sollte man ja nur anwenden wenn nich anders möglich...
P.S. Ich weis, ich nehm das alles zu Eng:)

-
Klar, es macht keinen Sinn, die ganze Welt als Freund einzuladen (da kannst du die gesamte Datenkapselung gleich vergessen und mit struct's arbeiten). Aber wenn zwei Klassen eng zusammenarbeiten wollen, ist eine gut plazierte friend-Freigabe durchaus nützlich (und beeinträchtigt auch nicht die Datenkapselung).