假设我有以下代码:
class A
{
public:
A() {}
int f(void*, void*)
{
return 0;
}
};
template <typename T>
class F {
public:
F(int(T::*f)(void*,void*))
{
this->f = f;
}
int(T::*f)(void*,void*);
int Call(T& t,void* a,void* b)
{
return (t.*f)(a,b);
}
};
A a;
F<A> f(&A::f);
f.Call(a, 0, 0);
好吧,这很有效,我可以轻松地调用该函数,但是例如,我如何在不知道类型的情况下拥有这些数组?
我希望能够调用任何类 f 函数作为回调。我通常会使用静态或 c 函数并完成它,但我想尝试调用 C++ 成员函数。
想想我在 C# 中作为代表要做什么。我在 Boost 和其他地方看到了非常复杂的实现,但我想要最少的,不需要复制、创建、删除等,只需要一个我可以调用的简单回调。
这是白日梦吗?任何意见,将不胜感激。