Verständnisfrage
-
Hallo,
ich habe eine Klasse CultureInfo. Dann eine 2te: Manager.
Ich möchte, dass nur die Klasse Manager Objekte vom Typ CultureInfo anlegt .. und diese auch verwaltet.
Doch wie erreiche ich das? Brauche einen Tipp.
Merci
-
zb:
nested class, CultureInfo ist private von Manager
-
Du könntest zum Beispiel die Konstruktoren von CultureInfo privat machen und den Manager als friend dazu. Dann kann nur der Manager den Konstruktor von außen aufrufen.
-
Hallo,
etwa so?
class DT_CultureInfo { friend class DT_Manager; private: DT_CultureInfo(); DT_CultureInfo(const char* apsLocName);
-
Tanzfreak schrieb:
Hallo,
etwa so?
class DT_CultureInfo { friend class DT_Manager; private: DT_CultureInfo(); DT_CultureInfo(const char* apsLocName);Jo, genau.
-
Hallo,
noch eine Frage:
DT_CultureInfo();rufe ich nicht auf. Rufe nur den anderen Konstruktor auf.
Kann ich DT_CultureInfo() auskommentieren/weglassen?
-
Wenn du den Konstruktor aus dem private-Bereich auskommentierst, schützt du ihn nimmer vor Zugriffen von außen, was zur Folge hat, dass man in anderen Funktionen/in main wieder Objekte mit DT_CultureInfo x; anlegen könnte, was du ja aber verhindern wolltest
-
Aha! Guter Einwand! Danke!
-
Vorden schrieb:
Wenn du den Konstruktor aus dem private-Bereich auskommentierst, schützt du ihn nimmer vor Zugriffen von außen, was zur Folge hat, dass man in anderen Funktionen/in main wieder Objekte mit DT_CultureInfo x; anlegen könnte, was du ja aber verhindern wolltest
Nope. Da der OP einen weiteren Ctor selbständig definiert hast, kann man den Default-Ctor getrost auskommentieren. Es wird in diesem Fall _kein_ Default-Ctor vom Compiler generiert. (Dies geschieht nämlich nur, wenn du überhaupt _keinen_ Ctor definierst).
Caipi