首页 > 解决方案 > 将指向方法的指针传递给模板类

问题描述

我想创建一个模板类,它的构造函数接受一个对象指针和一个指向对象方法之一的指针。下面的代码无法编译。什么是正确的语法?

template <class Obj, typename Method>
class Foo
{
public:
  Foo(Obj *obj, Method method)
    :mObj(obj), mMethod(method)
  {}

  void callMethod()
  {
    mObj->mMethod();
  }

private:
  Obj* mObj;
  Method* mMethod;
};

class Bar
{
public:
  void method() {}
};

我在 Foo 构造函数上收到此错误:

error C2440: 'initializing': cannot convert 
from 'void (__thiscall Bar::* )(void)'
  to 'void (__thiscall Bar::* *)(void)'

标签: c++templates

解决方案


推荐阅读