chr*_*423 1 c++ oop pointers class function-call
我快要绝望了!我需要从指向我的基类的指针调用非虚拟成员函数:
class A { };
class B : public A { public: void evilFunction() { std::cout << "Yay!"; } };
int main(void) {
A *pointer = new B();
// Now do something like this:
// pointer->evilFunction();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以用dynamic_cast做到这一点 - 但我不被允许!我真的不知道我还能做些什么.从理论上讲,由于我有指针,我很确定我可以用指针算术做一些魔法来获取函数的内存位置然后调用它,但我不知道怎么做或者至少如何开始.
谁能给我一个提示?这就是我所需要的一切.或者我将使用我的史诗初学者技能编写代码来删除g ++以报复C++对我造成的痛苦!你不能让这种情况发生,对吧?!
当你知道指针确实指向a时B
,那么只需使用a static_cast
.
int main()
{
A *pointer = new B();
// Now do something like this:
// pointer->evilFunction();
static_cast<B*>( pointer )->evilFunction();
}
Run Code Online (Sandbox Code Playgroud)