C
wenn ich mich recht erinnere sind functionspointer immer _cdecl wenn nicht anders deklariert. die zuzuweisende funktion muss dann nat. die gleiche aufrufkonvention benutzen, memberfunktionen benutzen aber thiscall, leider kann man diese nicht explizit deklarieren. oder man benutzt gleich etwas besseres wie stdcall oder fastcall. wenn du auch nichtmemberfunktionen zuweisen willst, solltest du das ganze aber lieber mit statischen memberfunktionen machen(dann brauchst du auch nicht unbedingt die aufrufkonvention zu ändern), etwa so:
class Zeichnung
{
public:
Zeichnung();
private:
typedef void (__fastcall *FPRESIZE)(Zeichnung*, int, int);
typedef bool (__fastcall *FPDRAW)(Zeichnung*);
//Memberfunktionen der Klasse
static bool __fastcall Draw(Zeichnung* pThis);
static void __fastcall Resize(Zeichnung* pThis, int width, int height);
//Funktionszeiger zu Funktionen evtl. ausserhalb der Klasse
FPDRAW FuncDraw;
FPRESIZE FuncResize;
//inline interface um Funktionen direkt mittels objekt.function benutzen zu können
inline bool draw() { FuncDraw( this ); }
inline void resize(int width, int height) { FuncResize( this, width, height ); }
//Falls eine Memberfunktion zum Zeichnen verwendet werdne soll
//zeichne die Polygone des Vektors (verwendet von draw())
std::vector<TRIANGLE> polygones;
};
Zeichnung::Zeichnung()
{
//Falls keine externe Funktion zugewiesen wurde,
//Zuweisung an die Memberfunktionen
FuncDraw = &Draw;
FuncResize = &Resize;
}