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?