Contructor verspätet aufrufen
-
Hallo!
Hab folgenden Code
class Living : public InteractiveSprite { private: ESpecies Species; public: Living(ESpecies Species, /* mehr Paramter */) : InteractiveSprite(AnimationFilename, /* mehr Paramter */) { //Der Konstruktor erwartet schon beim Initialiseren den Paramter AnimationFilename, den weiß ich aber noch nicht... if(Species==eRabbit) InteractiveSprite("Images\\Rabbt.ani", /* mehr Paramter */); //Irgendwie so würde ich es gerne aufrufen } //Mehr Methoden };Nun würde ich gerne den Konstruktor von InteractiveSprite nicht in der Initalisierungliste aufrufen, bzw. ich möchte schon allerdings möchte ich den Wert von AnimationFilename erst im Konstruktor von Living festlegen.
Danke! :xmas1:
-
Beim Ableiten den Basisklassen-Ctor verspätet aufrufen geht nicht.
Bei Composition könnte man tricksen (boost::optional, scoped_ptr).
Du kannst aber eine Hilfsfunktion schreiben, die dir aus den Ctor-Parametern den erwünschten Parameter ausrechnet:
static std::string MakeAnimationFilename(ESpecies Species) { switch (Species) { ... } } Living(ESpecies Species, /* mehr Paramter */) : InteractiveSprite(MakeAnimationFilename(Species), /* mehr Paramter */) { }
-
Hilfsfunktion...
Hätte ich auch drauf kommen können.
Dankeschön!