我有一个类,其中包含一个指向函数的指针,如下所示:
class demo{
void (*fn_ptr) (int) = NULL;
void AssignPtr(void (*fptr)(int))
{
*fn_ptr = *fptr;
}
};
我得到错误:
error: cannot convert ‘void(int)’ to ‘void(int)’ in assignment
答案 0 :(得分:10)
我认为你只想分配指针:
fn_ptr = fptr;
如:
class demo {
void (*fn_ptr)(int) = NULL;
public:
void AssignPtr(void (*fptr)(int))
{
fn_ptr = fptr;
}
void Call(int i) {
fn_ptr(i);
}
};
void print(int x) {
std::cout << "called print(" << x << ")\n";
}
int main() {
demo d;
d.AssignPtr(print);
d.Call(42);
}