error C2259: 'Buch' : cannot instantiate abstract class
-
hi leutz!
ich verstehe den fehler einfach nicht, buch ist keine abstrakte klasse:class Buch : public Entity, public IBOOK { public: virtual void SetTitle(const char* name); // da ist noch viel mehr aber keine abstrakte mehr dabei };
class Entity { public: Entity(); ~Entity(); //für speicherfreigabe, enthält keine abstrakten methoden }
class IBOOK { public: virtual void SetTitle(const char* name) = 0; // die restlichen funktionen }
an was kann das liegen?
danke!!!!
-
hat keiner ne IDEE??
-
Hast Du das SetTitle auch implementiert? Oder nur deklariert?
-
-Schau doch VC++ Dokumentation nach, dort sind alle Fehler und ihre Auslöser aufgelistet
-Eine anstrakte Klasse ist eine Klasse, die min. eine pure virtual Funktion hat.
-Enity hat keinen virtuellen Destruktor -> evtl. Speicherloch
mfg
Glamdring
-
Sieht korrekt aus. Was hast du denn alles weggelassen?
BTW, gibt der MSVC im Rest der Fehlermeldung nicht sowieso immer aus, welche abstrakte Funktion nicht implementiert wurde?
-
operator void schrieb:
BTW, gibt der MSVC im Rest der Fehlermeldung nicht sowieso immer aus, welche abstrakte Funktion nicht implementiert wurde?
ja, aber dann kommt eine andere fehlermeldung.
Wahrscheinlich hast du in der IBOOK einen Parameter verändert und diesen nicht in der Buch übernommen.
-
Jester schrieb:
Hast Du das SetTitle auch implementiert? Oder nur deklariert?
Das würde einen Linkerfehler auslösen. Der Fehler muss also in der Deklaration liegen.
-
hast du vielleicht eine abstrakte Funktion von einer Basisklasse geerbt?
geloescht