abstrakte Class
-
Hi,
hab folgendes Problem:
class A : public B { protected: CByteArray my_array; virtual void ProcessReceive(CByteArray &) PURE; } class C : public A { } class D : public A { public: D(); virtual ~D(); protected: virtual void ProcessReceive(CByteArray &data); } class X : public Y { protected: virtual A *GetMember() { return &member; } //<- classA classB m_array2; //<- fehlermeldung }Jetzt bekomm ich die Fehlermeldung, dass Class B eine abstrakte Class darstellt und deshalb keine Member aufweisen darf. Wie kann ich das umgehen?
Gruß
Konrad
-
Die virtuelle Funktion implementieren, oder nur einen Zeiger auf Klasse B nutzen.
-
Janjan schrieb:
Die virtuelle Funktion implementieren, oder nur einen Zeiger auf Klasse B nutzen.
d.h. die Funktion in ClassA definieren;
gibt es eine Möglichkeit trotzdem von ClassA zu ClassD zu kommen über einen Funktonsaufruf?
-
Oder die Funktion in Klasse B definieren.
Du kannst abstrakte Klassen nur für Zeiger nutzen.
Und wenn du von ClassA zu ClassD willst, dann hast du in der Regel ein kaputtes/schlechtes Design. Das würde aber mit einem Downcast funktionieren... sofern es sich um ein Objekt der Klasse D handelt.