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?


Anmelden zum Antworten