在传递给构造函数的函数指针的赋值中键入转换错误

时间:2016-03-03 18:28:01

标签: c++

我正在尝试一些新的东西,并希望一些老兵可以指导我走正确的道路。我做了研究,但找不到答案。

我试图使用类的构造函数声明一个函数指针。我收到错误:

  

cannot convert 'int(**)()' to 'int(*)()' in assignment

这是我的代码:

class A
{
   public:
   A(int (*ptr1)());
     void update();
   private:
     int (*_ptr2)();
};

A::A(int(*ptr1)()){
  _ptr2 = &ptr1;
}

void A::update()
{
  int result = _ptr2();
}

1 个答案:

答案 0 :(得分:3)

你想要

_update_method = func;

那里没有&

_update_method = &func;

实际上取int(*func)()参数的地址,而不是传递的函数指针。因此编译器正确地抱怨类型不匹配。