000
17.07.2007, 19:42 Uhr
tobb
|
Hi,
ich habe ein Problem. Folgender Code
Code: |
//test.cpp //Kurz zum Test ein Objekt erzeugen und wieder löschen tE::GraphicObject *Baum = new tE::GraphicObject(); delete Baum;
|
gibt immer diesen Fehler
Und zwar wird dieser Fehler erst von
ausgelöst.
Folgendermaßen sieht es aus: tE::GraphicObject ist eine Klasse, deren Funktionen in einer DLL stecken. Header: (der in test.cpp includiert wird)
Code: |
//... #define tE_EXPORT __declspec(dllexport) //... tE_EXPORT class GraphicObject { public: //constructors tE_EXPORT GraphicObject(); //... //destructor tE_EXPORT virtual ~GraphicObject(); //... protected: BITMAP *Bitmap int PosX int PosY };
|
Und die Definition des Kon- und Destruktors (also genau die zwei einzigen Methoden, die für den Fehler verantwortlich sind) sieht folgendermaßen aus:
Code: |
//... //constructor GraphicObject::GraphicObject() : Bitmap(0), PosX(0), PosY(0) { } //... //destructor GraphicObject::~GraphicObject() //it's virtual { if(Bitmap) destroy_bitmap(Bitmap); } //...
|
Also nur total banal. Trotzdem kommt diese Fehler...
Mit einer kleinen Änderung kommt der Fehler allerdings nicht mehr... und zwar, wenn ich das Schlüssekwort "virtual" vor dem Desktruktor weglasse... Diese muss aber sein, denn GraphicObject dient als Basisklasse und dessen Konstruktoren müssen bekanntlich virtuell sein... Warum kommt der Fehler? Dieser Post wurde am 17.07.2007 um 19:47 Uhr von tobb editiert. |