Dürfen Variablen abgelitten werden?



  • Hallo!

    Es existiert in etwa folgende Klassenhierarchie:

    class A; // Vorwärtsdeklaration
    
    // Klasse B
    
    class B : public Foo_1
    {
      friend class A;
    
    protected:
    
      A * m_pA;
    };
    
    // Klasse A
    
    class A : public Foo_2
    {
      friend class My_B;
    
    protected:
      B & m_B;
    
    public:
    
      A(B & b);
    };
    
    // Klasse C
    
    class C : public B
    {
    };
    

    Ich möchte nun abgeleitete Klassen von A,B,C erstellen. Hierbei soll unter anderem die Membervariable aus Klasse B (A * m_pA;) überschrieben werden. Ich möchte C aber nicht von meiner eigenen Version von B ableiten lassen, da ich sonst sämtlichen Code kopieren müsste was überflüssig ist. Ich möchte hingegen nur in C die Membervariable aus B wie folgt überschreiben.

    class My_A; // Vorwärtsdeklaration
    
    // Klasse My_B
    
    class My_B : public B
    {
      friend class My_A;
    
    protected:
    
      A * m_pA;
    };
    
    // Klasse My_A
    
    class My_A : public A
    {
      friend class B;
    
    protected:
      B & m_B;
    
    public:
    
      A(B & b);
    };
    
    // Klasse C
    
    class My_C : public B
    {
    // Hier nur die Membervariable überschreiben
    protected:
    
      My_A * m_pA;
    };
    

    Ist das so erlaubt?

    P.S.: Ggf. brauche ich von Klasse B nichts ableiten, sondern nur A und C da ich evtl. die Methoden von B doch nicht ändern muss.



  • Das geht nicht. Ueberschreiben kannst du nur Methoden, aber keine Variablen. Aber warum gibst du der Variablen nicht einfach einen anderen Wert?



  • Blue-Tiger schrieb:

    Aber warum gibst du der Variablen nicht einfach einen anderen Wert?

    Ich kann der Variablen doch nicht einfach einen anderen Wert geben oder wie meinst du das?


Anmelden zum Antworten