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

标签 c++ class oop pointers 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;
}

我知道我可以用 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/

相关文章:

c++ - 对象属性兄弟访问

c# - OOP - 使用改变实现的方法和半固态的对象的正确设计

java - 从数组中删除对象并将其替换为另一个数组中的对象

c++ - 在 C++ 中显式转换为 native 类型

c++ - 如何将动态大小的纹理数组与 glTexImage2D 一起使用?

asp.net - 在 asp.net 中通过代码隐藏更改 Css 类的内容

c++ winsock 代码在 visual studio 2010 中的原始解决方案/项目中不起作用

Java:Android类和api包层次继承

Java - 如何根据请求打印文件中的数据?

C++ 将内部结构作为参数传递