我快要绝望了!我需要从指向我的基类的指针调用非虚拟成员函数:
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;
}
我知道我可以用 dynamic_cast 做到这一点 - 但我不允许这样做! 我真的不知道我还能做什么。理论上,因为我有指针,我很确定我可以用指针算法做一些魔术来获取函数的内存位置然后调用它,但我不知道该怎么做,或者至少不知道该怎么做开始。
谁能给我点提示?这就是我所需要的。或者我将使用我史诗般的初学者技能编写代码来删除 g++,以报复 C++ 给我带来的痛苦!你不能让这种事发生,对吧?!
最佳答案
当你知道指针确实指向一个B
时,那么就使用一个static_cast
。
int main()
{
A *pointer = new B();
// Now do something like this:
// pointer->evilFunction();
static_cast<B*>( pointer )->evilFunction();
}
关于c++ - 从基调用非虚拟成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20615911/