c++类成员函数指针在类中不能正常工作



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

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();
}

预期:

这是功能A.

这是功能B.

这是功能B.

但我得到了:

这是功能A.

这是功能A.

这是功能B.

有人知道吗非常感谢

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

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

实时

最新更新