Funktion aufrufen nach Casting --> Absturz
-
Hi,
ich arbeite momentan an einem Klassenkonzept das jedoch noch nicht so ganz will...
Aber erstmal code:
__int32 __stdcall IUnknown::queryInterface (const IID &iid, void **ppvObject) { switch (iid) { case IID_IDirectGraphic: *ppvObject = new (IDirectGraphic*); ((IDirectGraphic*)(*ppvObject))->initialize(); // Hier schmiert er ab. break; case IID_IDirectGraphic2: *ppvObject = new (IDirectGraphic2*); ((IUnknown*)(*ppvObject))->initialize(); // ebenso hier schmiert er ab. break; } return 0; }
Die Funktion wird so aufgerufen:
int main (void) { IDirectGraphic *DG = NULL; IDirectGraphic2 *DG2 = NULL; DirectGraphicCreate (&DG); DG->setMode (0); DG->queryInterface (IID_IDirectGraphic2, (void**)&DG2); DG->release (); DG2->setMode (0); DG2->release (); return 0; }
Compilieren tut er fehler frei doch versuche ich ein Interface neu zu erstellen, gibts nen derben crash, wie kann ich dieses Problem beheben?
-
bugs schrieb:
*ppvObject = new (IDirectGraphic*);
Ändern in:
*ppvObject = new IDirectGraphic;
Durch die ganze herumcasterei hast du das Typechecking des Compilers effektiv ausgehebelt.
-
Hi,
aso, das konnte ich natürlich nicht ahnen, wie müsste denn dann die zeile mit der initialisierungsfunktion aussehen?
-
hat sich erledigt, man bin ich doof