【发布时间】:2010-07-05 11:40:28
【问题描述】:
我有一个类,我在其中声明了一个静态函数。我将此函数注册为另一个库的回调函数。现在,在这个函数中,我将回调数据取消引用到类指针并调用特定的非静态成员。
调用成功,控件进入非静态成员函数。但是在这个函数内部,当我访问同一个类的成员变量时,我得到了一个分段错误。这很奇怪。谁能帮我解决我可能犯的错误和解决方案?
这是代码的样子。
class test
{
int count;
int callback(const char * a, const char *b)
{
print(a);
print(b);
count++; //// HERE IS WHERE I GET THE SEGMENTATION FAULT
}
public:
static int callbackwrapper(const char*a, const char *b, void *ptr)
{
test *p = (test *)ptr;
p->callback(a, b);
}
test():count(0) {}
~test() {}
Register()
{
registercallback(callbackwrapper);
}
}
【问题讨论】:
-
如何调用回调?
-
传入回调封装的指针是否有效?
-
我看不到您如何为第三方库提供有效的 ptr。