Dynamische Erzeugung eines Objekts
-
Ist es möglich einer Funktion einen Klassennamen zu übergeben. Und dann anhand dieses Namens ein Objekt zu erzeugen und diesen dann zurück zugeben?
-
heimeidei schrieb:
Ist es möglich einer Funktion einen Klassennamen zu übergeben. Und dann anhand dieses Namens ein Objekt zu erzeugen und diesen dann zurück zugeben?
ja
-
Danke.
-
Sorry der Witz ist zu alt, dass ich darüber lachen kann.
Muss ich jetzt jedes mal noch anhängen: Wenn ja, wie?
-
heimeidei schrieb:
Sorry der Witz ist zu alt, dass ich darüber lachen kann.
Muss ich jetzt jedes mal noch anhängen: Wenn ja, wie?Du hast nur nach der Möglichkeit gefragt, nicht nach dem wie... Was hast du denn bisher bereits probiert und woran ist es gescheitert?
-
Ja man frag öfters nach der Möglichkeit. Wenn man jemand fragt ob er einem die Zeit sagen kann, dann bekommt man auch nicht nur ein Ja. Und wenn doch, dann sagte ich ja: ein alter Witz.
Was hast du denn bisher bereits probiert und woran ist es gescheitert?
Nichts habe ich probiert, da ich nicht weiß wie.
-
Du hast keine direkten Sprachmittel dazu wie vielleicht in der ein oder anderen Sprache.
Du musst etwas programmieren, wie z.B. wenn name="MyClass" erzeuge MyClass.
Anstatt ein riesen if Konstrukt zu bauen, kannst du z.B. eine std::map mit string (Klassenname) und einem Funktionszeiger (erzeuge Objekt) machen.
-
heimeidei schrieb:
Ist es möglich einer Funktion einen Klassennamen zu übergeben. Und dann anhand dieses Namens ein Objekt zu erzeugen und diesen dann zurück zugeben?
Nennt sich Object Factory.
-
Schau Dir CRuntimeClass an!
CRuntimeClass::FromName
http://msdn.microsoft.com/en-us/library/z2z1h62t(VS.80).aspx
Da ist sogar ein Beispiel.Die entsprechenden Vorraussetzungen (DECLARE_/IMPLEMENT_SERIAL/_DYNCREATE etc.) findest Du auch in der MSDN!