我正在尝试一些新的东西,并希望一些老兵可以指导我走正确的道路。我做了研究,但找不到答案。
我试图使用类的构造函数声明一个函数指针。我收到错误:
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();
}
答案 0 :(得分:3)
你想要
_update_method = func;
那里没有&
。
_update_method = &func;
实际上取int(*func)()
参数的地址,而不是传递的函数指针。因此编译器正确地抱怨类型不匹配。