对象的成员函数指针不同,但它们运行在同一个成员函数上。代码如下:
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))();
实时