gpt4 book ai didi

c++ - 从基调用非虚拟成员函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:22 25 4
gpt4 key购买 nike

我快要绝望了!我需要从指向我的基类的指针调用非虚拟成员函数:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com