将参数函数分配给 class 成员

Assign argument function to class member

我有一个 class,其中包含一个指向函数的指针,如下所示:

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

我想你的意思是只分配指针:

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);
}