В настоящее время у меня есть класс такого типа, сокращенный для простоты:
class MyClass {
public:
MyClass();
void* someFunc(void* param);
}
Теперь мне нужно вызвать функцию такого типа (не являющуюся членом какого-либо класса и которую я, к сожалению, не могу изменить), но которую мне все равно нужно вызвать:
void secondFunc(int a, int b, void *(*pCallback)(void*));
Теперь мне нужно передать адрес someFunc экземпляра.
Нерабочий образец:
MyClass demoInstance;
// some other calls
secondFunc( 1, 2, demoInstance::someFunc() );
Я пробовал также с такими бросками, как:
(void* (*)(void*)) demoInstance::someFunc;
reinterpret_cast<(void* (*)(void*))>(demoInstance::someFunc);
Как я могу вызвать эту функцию с функцией-членом класса в качестве параметра, чтобы этот мог использовать ее как обратный вызов?
Любая идея или замечание приветствуется. Спасибо и с уважением Тобиас
struct Foo { MyClass *a; void *b; };
, а затем использоватьvoid *MyCallback(void *foo_) { Foo *foo = static_cast<Foo*>(foo_); return foo->a->someFunc(foo->b); }
в качестве обратного вызова. - person Steve Jessop   schedule 18.11.2010