virtuelle Funktion der Childklass im Ctor aufrufen....
-
Hi!
Ich hab eine Klassenstruktur, die in etwa so ausschaut:
class Base { public: Base() { resetConfiguration(); } protected: virtual void resetConfiguration() { // ein paar Sachen } }; class Child : public Base { public: Child() : Base() { // ... } protected: virtual void resetConfiguration() { Base::resetConfiguration(); // wieder ein paar Sachen } }; // ... int main() { Cild foo(); // nur Base::resetConfiguration() wird aufgerufen }
Das Problem: da foo ja eine Child-Instanz ist, sollte ja gemaess Polimorphie auch Cild::resetConfiguration im Ctor von Base aufgerufen werden. Nun ist der Child-Teil von foo ja noch gar nicht konstruiert, wenn der Ctor von Base ablaeuft. Geh ich recht in der Annahme, dass deswegen nur Base::resetConfiguration() aufgerufen wird?
-
Ja.
Das hättest du mit einer cout-Zeile auch rausgefunden
-
na ja, das HABE ich auch mit einer Zeile rausgefunden... war zwar printf(), aber darauf kommts ja net an
War mir nur nicht sicher ob das daran lag oder ob der Fehler doch woanders lag; das echte Programm ist ein paar Ecken komplexer, deshalb hab ich noch mal sicherheitshalber nachgefragt
Ich hab das Problem jetzt einfach mit 'nem kleinen Workaround umgangen, aber nur so zur Neugier: das Problem hatt' ich sicher nicht als erster, gibts irgend eine Standardloesung dafuer?