【发布时间】:2010-11-18 01:02:12
【问题描述】:
目前我有一个这样的类,为简单起见被缩短:
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); }作为回调。