3

标题几乎说明了一切!

有什么漂亮/简单的方法可以做到这一点吗?由于函数指针不能指向成员函数,并且成员函数需要知道成员所属的类,但在这种情况下,没有这样的信息,因为函数来自的类会有所不同。请只使用标准库!

template <class A>
typedef void (A::*Function)(Parameters p); 
4

2 回答 2

6

您可以尝试将其包装在这样的结构中:

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;
于 2013-08-13T19:45:58.103 回答
4

未经测试,但这应该适用于 C++11 编译器:

template <typename T>
using Function = void (T::*)(Parameters p);

现在有趣的问题是解决这个问题的问题是什么。

于 2013-08-13T20:20:06.800 回答