C++是一种将typedef模板用于成员函数的方法吗?

opt*_*nal 3 c++ templates pointers typedef member

标题几乎说明了一切!

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

template <class A>
typedef void (A::*Function)(Parameters p); 
Run Code Online (Sandbox Code Playgroud)

gre*_*olf 5

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

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;
Run Code Online (Sandbox Code Playgroud)

  • @xorguy 这取决于您是否在模板上下文中使用它,它可以是依赖名称。如果您在非模板上下文中使用它,就像在常规函数中一样,这将在没有 `typename` 的情况下工作。 (2认同)