Actuellement, j'ai une classe de ce genre, raccourci pour la simplicité:Cast à fonction membre pointeur normal
class MyClass {
public:
MyClass();
void* someFunc(void* param);
}
Maintenant je dois appeler une fonction de ce genre (non membre d'une classe et que je malheureusement ne peut pas changer) mais que je dois appeler de toute façon:
void secondFunc(int a, int b, void *(*pCallback)(void*));
maintenant je dois passer l'adresse de someFunc d'une instance.
Un échantillon ne fonctionne pas:
MyClass demoInstance;
// some other calls
secondFunc(1, 2, demoInstance::someFunc());
J'ai essayé aussi avec des moulages comme:
(void* (*)(void*)) demoInstance::someFunc;
reinterpret_cast<(void* (*)(void*))>(demoInstance::someFunc);
Comment puis-je appeler cette fonction avec une classe fonction de membre en tant que paramètre de sorte que celui-ci peut l'utiliser comme rappel?
Toute idée ou remarque est appréciée. Merci et salutations tobias
Vous * devez * fournir une instance; c'est un comportement indéfini sinon. Qu'est-ce que vous essayez d'accomplir. – strager
Quel pointeur est passé dans la fonction de rappel en tant que paramètre? Si vous pouvez le spécifier d'une manière ou d'une autre, vous devriez être capable de créer un 'struct Foo {MyClass * a; void * b; }; ', puis utilisez' void * MyCallback (void * foo_) {Foo * foo = static_cast (foo_); retourne foo-> a-> someFunc (foo-> b); } 'comme rappel. –