将参数函数分配给类成员

时间:2015-04-14 15:26:35

标签: c++ pointers function-pointers

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

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

1 个答案:

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