C++:通过基 class 中定义的函数指针从派生调用函数
C++: Calling a function from derived by a function pointer defined in base class
如果定义了函数指针并在基class中赋值。它必须用于从派生的 class 调用函数。我们该怎么做?
This 显示了一个通过指针调用函数的例子。但这仅适用于指针在使用它的地方的相同 class 中定义的情况。
This 显示调用父 class 函数的示例。我尝试了一些类似的但没有用。
From derived
(((Base)this)->*fncPtr)();
(((Base)this)->*(Base::fncPtr))();
以上两个都不行。请帮帮我。
给定一个指向 Derived
的成员函数的指针:
void (Derived::*derivedFncPtr)() = &Derived::someMemberFunction;
首先,将其转换为指向Base
的成员函数的指针:
void (Base::*baseFncPtr)() = static_cast<void (Base::*)()>(derivedFncPtr);
然后,调用它:(假设*this
是一个动态类型Derived
的Base
)
(this->*baseFncPtr)();
如果你有一个指向基void (Base::*fncPtr)()
的成员函数的指针,你可以用一个指向派生对象this
的指针来调用它,就像调用一个指向成员函数的指针一样相同的派生 class.
(this->*fncPtr)();
(((Base)this)->*fncPtr)();
如果你真的想(这不是必需的),你可以显式地将 this
转换为 Base
的指针,但这不是完成的方式,因为 Base
不是一个指针类型。这会起作用:
((Base*)this)->*fncPtr)();
但正如我所说,演员阵容是多余的。
只需使用:
(this->*fncPtr)();
没有其他要求。转换为基类型是隐式的。所以你不需要明确地转换它。
如果定义了函数指针并在基class中赋值。它必须用于从派生的 class 调用函数。我们该怎么做?
This 显示了一个通过指针调用函数的例子。但这仅适用于指针在使用它的地方的相同 class 中定义的情况。
This 显示调用父 class 函数的示例。我尝试了一些类似的但没有用。
From derived
(((Base)this)->*fncPtr)();
(((Base)this)->*(Base::fncPtr))();
以上两个都不行。请帮帮我。
给定一个指向 Derived
的成员函数的指针:
void (Derived::*derivedFncPtr)() = &Derived::someMemberFunction;
首先,将其转换为指向Base
的成员函数的指针:
void (Base::*baseFncPtr)() = static_cast<void (Base::*)()>(derivedFncPtr);
然后,调用它:(假设*this
是一个动态类型Derived
的Base
)
(this->*baseFncPtr)();
如果你有一个指向基void (Base::*fncPtr)()
的成员函数的指针,你可以用一个指向派生对象this
的指针来调用它,就像调用一个指向成员函数的指针一样相同的派生 class.
(this->*fncPtr)();
(((Base)this)->*fncPtr)();
如果你真的想(这不是必需的),你可以显式地将 this
转换为 Base
的指针,但这不是完成的方式,因为 Base
不是一个指针类型。这会起作用:
((Base*)this)->*fncPtr)();
但正如我所说,演员阵容是多余的。
只需使用:
(this->*fncPtr)();
没有其他要求。转换为基类型是隐式的。所以你不需要明确地转换它。