如何在C ++中将成员函数分配给指向成员函数的指针

时间:2013-09-09 18:51:18

标签: c++ compiler-errors variable-assignment pointer-to-member

我正在尝试将成员函数分配给指向C ++中成员函数的指针,但是我收到了一个错误。我有这样的代码:

#ifndef MY_CLASS_H
#define MY_CLASS_H

class MyClass {
    MyClass* (MyClass::*memPtr_) (ParamType);
public:
    void myFunction();
    void myFunction2();
    void myFunction3();

    MyClass& foo(ParamType var);
    MyClass& bar(ParamType var);
    MyClass& fooBar(ParamType var);
    ...
};

#endif

和...

void MyClass::myFunction() {
    memPtr_ = &MyClass::foo;

...

void MyClass::myFunction2() {
    memPtr_ = &MyClass::bar;

...

void MyClass::myFunction3() {
    memPtr_ = &MyClass::fooBar;

...

在线上

memPtr_ = &MyClass::foo;

memPtr_ = &MyClass::bar;

memPtr_ = &MyClass::fooBar;

当我编译时 - 我收到错误:

"cannot convert 'MyClass& (MyClass::*)(ParamType)'
to MyClass* (MyClass::*)(ParamType)' in assignment."

我已经搜索过了 - 但我似乎找不到解决这个问题的方法 - 将成员函数分配给指向成员函数'memPtr _'的指针的正确语法是什么?

2 个答案:

答案 0 :(得分:2)

Jrok是对的,我解决了这个问题。我只是改变了:

MyClass *(MyClass :: * memPtr_)(ParamType);

为...

MyClass的&安培; (MyClass :: * memPtr_)(ParamType);

答案 1 :(得分:0)

您没有使用没有()的函数名称的地址,这是指针。