簡體   English   中英

如何在C ++中將成員函數分配給指向成員函數的指針

[英]How to assign a member function to a pointer to member function in C++

我正在嘗試將成員函數分配給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);

您不要使用沒有()的函數名的地址,這就是指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM