Member in abgeleiteter Klasse erweitern



  • Angenommen, ich habe folgende völlig simplifizierte Hierarchie:

    class Member
    {
    };
    
    class ExtMember : public Member
    {
    };
    
    class Base
    {
      Member m;
    };
    
    class Derivative : public Base
    {
    };
    

    Jetzt möchte ich so ungefähr folgendes machen bzw. parallel zur Funktionalitätserweiterung meiner abgeleiteten Klasse auch Member m durch eine modifizierte Variante ersetzen.

    Derivative::Derivative()
      : Base()
    {
      m = ExtMember();
    }
    

    Bleibt mir jetzt etwas anderes übrig, als m zu einem (unique/shared) pointer zu machen, im Derivative-Konstruktor m.reset(ExtMember()) zu machen und dadurch Polymorphie zu nutzen oder gibts da eine designtechnisch noch schönere Lösung? Irgendwie wirkt das so ein wenig nach Brechstange, den pointer erst in der Basisklasse zu schreiben und dann in der abgeleiteten wieder zu überschreiben...


Log in to reply