c – 函数指针 – 模糊符号错误
发布时间:2020-12-16 09:36:24 所属栏目:百科 来源:网络整理
导读:MyClass是一个单例类(在我的整个程序中只会有其中一个). 我想做的是如下. 使用AddData向我的类添加数据,返回一个函数指针,然后我可以传递给dll中的“另一个”函数. 然后这个’其他’函数调用我的回调函数 我的课就是这样. typedef void (*DataReceivedCallba
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中定义的’callback’传递给一个将回调到我的回调函数的dll函数. 我有dll的代码所以我想修改一个如果它的函数,以便它接受我的回调函数参数. 我在dll函数签名中这样做: void * someDllFunction( int var1,int var2,DataReceivedCallback& callback) { callback(2,200); } 但我得到错误: 我怎么解决这个问题? 解决方法typedef void (*DataReceivedCallback)(int,int); 应该, typedef void (MyClass::*DataReceivedCallback)(int,int); 因为,MyCallBackFunction是MyClass的非静态成员方法.所以它不能有常规的功能签名. callback = &MyClass::MyCallBackFunction; Demo. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |