繁体   English   中英

c++ class 成员 function 指针在 ZA2F2ED4F8EBC2CBB4C21A29DC40AB61ZD 中无法正常工作

[英]c++ class member function pointer does not work rightly in class

对象的成员 function 指针不同,但它们运行在同一个成员 function 上。 代码如下:

class A {
public:
    A *child = NULL;
    void (A::*_backwardFunc)() = NULL;
    void FuncA()
    {
        cout << "This is function A." << endl;
    }

    void FuncB()
    {
        cout << "This is function B." << endl;
    }

    void set(int token = 0)
    {
        this->_backwardFunc = (token == 0) ? &A::FuncA : &A::FuncB;
    }

    void print()
    {
        if (_backwardFunc) {
            (this->*_backwardFunc)();
        }
        if (child && child->_backwardFunc) {
            (child->*_backwardFunc)();
        }
    }
};
 
int main()
{
    A a, b;
    a.set(0);
    b.set(1);
    a.child = &b;
    a.print();
    b.print();
}

期望:

这是 function A。

这是 function B。

这是 function B。

但我得到了:

这是 function A。

这是 function A。

这是 function B。

有人知道吗? 很多谢谢。

对于a.print(); , 在print() , (child->*_backwardFunc)(); 正在调用a._backwardFunc (在child上),它指向A::FuncA 如果你想调用child->_backwardFunc (指向A::FuncB ),它应该是

(child->*(child->_backwardFunc))();

居住

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM