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

How to assign a member function to a pointer to member function in C++

本文关键字:函数 成员 指针 分配 C++      更新时间:2023-10-16

我正在尝试将成员函数分配给指向 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);

你不取一个没有()的函数名称的地址,这就是指针。