标题几乎说明了一切!
有什么漂亮/简单的方法可以做到这一点吗?由于函数指针不能指向成员函数,并且成员函数需要知道成员所属的类,但在这种情况下,没有这样的信息,因为函数来自的类会有所不同。请只使用标准库!
template <class A>
typedef void (A::*Function)(Parameters p);
您可以尝试将其包装在这样的结构中:
template <class T>
struct method_ptr
{
typedef void (T::*Function)(Parameters p);
};
class A
{
public:
void foobar(Parameters);
};
// ...
method_ptr<A>::Function pfoobar = &A::foobar;
未经测试,但这应该适用于 C++11 编译器:
template <typename T>
using Function = void (T::*)(Parameters p);
现在有趣的问题是解决这个问题的问题是什么。