我有一个Foo
以 2 参数函数作为参数的函数:
void Foo(void (*fcn)(int, int*));
但是,我要传入 ( func
) 的函数类型只需要 1 个参数*。
typedef void (__stdcall *FuncCallBack)(int a);
void Caller(FuncCallBack func) {
Foo(????);
}
在 C# 中,我会执行以下操作:
Foo((a,b) -> func(a));
我正在尝试对委托类做类似的事情(发现我不能有一个指向绑定成员函数的指针,我已经切换到静态):
class Delegate {
private:
static FuncCallBack _Callback;
public
Delegate(FuncCallBack);
static void Callback(int, int*);
}
Delegate::Delegate(FuncCallback callback) { _Callback = callback; }
void Delegate::Callback(int a, int *b) { _Callback(a); }
我这样使用:
void Caller(FuncCallBack func) {
Delegate d = Delegate(func);
Foo(&(d.Callback));
}
这目前给了我一个链接器错误:unresolved external symbol "private: static void (__stdcall* Delegate::_Callback)(int)" (?_Callback@Delegate@@0P6GXHHPAN0@ZA)
- 问题 1:什么可能导致此链接器错误?
- 问题2:有没有更好的方法来做到这一点?
*函数 typedef 包括__stdcall
因为它是从(并将回调)C# 传入的)