我在定义一个可以指向任何成员函数(不仅仅是指定类的成员函数)的函数指针时遇到了困难。
例如,C++ 强制我指定指向成员函数的函数指针将指向的类:
typedef void (Foo::*MyFunctionPointerTypeName)(int);
但是如果这个函数指针指向的类成员函数不在Foo
呢?那么我将如何写这个,或者我可以使用什么替代方法?
更新:对于任何寻求如何使用 C++11 完成此任务的快速答案的人 std::function
(因为有关该主题的教程似乎假设了很多读者):
定义(从内部Foo
):
std::function<void(int)> _fun;
绑定(来自任何类):
objFoo->_fun = std::bind(&SomeOtherClass::memberFunction,
this, std::placeholders::_1);
调用它(从内部Foo
)
if(_fun != nullptr) _fun(42);
如果你的函数没有参数,你可以删除std::placeholders::_1
. 如果您的函数有两个参数,您还需要将 std::placeholders::_2
其作为参数添加到std::bind
. 对于三参数、四参数等同样如此。