sorry, spørgsmålet lyder mere på HVORDAN jeg for det til at VIRKE, ikke så meget hvorfor. Det er vel pga. calling convention der skifter fra __thiscall til __stdcall eller noget lign.
Umiddelbart må du ikke lave pointere til klassemedlemmer fordi der ikke bliver lavet en kopi til hver instance af din klasse, og fordi klassens instance altid skal kunne ses fra objektet.. Dette kan løses ved at lave member-functionen static.... Men jeg er dog ikke sikker på at det er løsningen for dig lige der... Jeg kan ikke helt gennemskue din kode dog. Måske kan du bruge det nedenstående istedet:
class CFunction { public: virtual void operator()(...) =0; }
class EnFunktion : public CFunction { public: void operator()(...) { /* Her skal du behandle dine dynamiske argumenter og trække de ints du vil have, ud */ cout << "din kode" << "her" << endl; }; }
class EnAndenFunktion : public CFunction { public: void operator()(...) { cout << "andet kode" << "her" << endl; }; }
void Activate(int x, int y) { // brug funktionens operator (*object)(x,y); }
private: CFunction *object; }
int main() { EnFunktion K; EnAndenFunktion H;
FunctionCaller P(&K); FunctionCaller Q(&H);
P->Activate(3,4); Q->Activate(5,6); }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.