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

标签 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_”的指针的正确语法是什么?

最佳答案

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

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

为了...

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

关于c++ - 如何在 C++ 中将成员函数分配给指向成员函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18704932/

相关文章:

c++ - 如何在arduino库头中覆盖#define

c++ - QTreeView - 删除某些元素的可扩展外观

java - "The left hand side of an assignment must be a variable"由于额外的括号

java - 尝试更改字体Android Studio时出错

windows - libqxt编译-mingw32-make异常

arrays - 在 MATLAB 中将类数组的元素分配给各个变量时出现问题

c++ - 使用不同的 enable_if 条件选择成员函数

c++ - 如何从枚举类中获取随机值?

sql-server - 将 SELECT 分配给 DBVisualizer 中 SQL-Commander 中的变量

r - 使用变量名在 R 中创建一个向量