MyClass是一个单例类(在我的整个程序中将只有这些类中的一个)。函数指针 - 模棱两可的符号错误
我想要做的事情如下。
- 使用AddData将数据添加到我的类中,获取返回的函数指针,然后可以将它传递给dll中的“另一个”函数。
- 那么这个“其他”函数调用我的回调函数
我的班级像这样。
typedef void (*DataReceivedCallback)(int, int);
class MyClass
{
MyClass();
~MyClass();
void AddData(int sourceId, DataReceivedCallback &callback);
static void MyCallBackFunction(int var1, int var2);
};
void MyClass::AddData(int sourceId, DataReceivedCallback &callback)
{
callback = &MyCallBackFunction;
}
void MyClass::MyCallBackFunction(int var1, int var2)
{
//do something blah blah
}
我可以再做:
int main()
{
DataReceivedCallback callback;
MyClass->GetInstance()->AddData(1, callback);
callback(1,100);
}
当我一步通过这次我看到,我的确步入回调MyCallBackFunction这就是我想要的东西:)
我再想现在要做的就是将main中定义的“回调”传递给一个dll函数,该函数将回调到我的回调函数中。
我有的DLL的代码,所以我想修改一个,如果它的功能,以便它接受我的回调函数参数。
我在DLL函数签名这样做:
void * someDllFunction(int var1, int var2, DataReceivedCallback& callback)
{
callback(2, 200);
}
但我得到的错误: 错误C2872: 'DataReceivedCallback':不明确的符号
我该如何解决这个问题? 这是否只能被允许跨越dll边界使用c-style参数?
我不明白整个安装:你说你只想要一个*你* singleton类'MyClass'的实例,但你有这个过于复杂的方案,以返回一个指向它的成员函数。为什么?如果只有一个这样的实例和一个这样的类,为什么这种间接?为什么有一个函数'AddData' - 它没有添加任何东西! –