c++ - 访问冲突。 C++ 多态性

标签 c++ polymorphism

我有点开始学习 C++ 中的多态性了。这段代码给我“访问冲突读取位置 0xFDFDFD00”。 Visual Studio 2012 专业版。调试器说,“i”的“__vfptr”是“0xfdfdfd00 {???}”。

#include <iostream>
#include <vector>

using namespace std;

class Enemy {
public:
    virtual void loop() = 0;
};

class EnemyA{
public:
    void loop() {
        cout << "Pew-pew\n";
    }
};
class EnemyB {
public:
    void loop() {
        cout << "Pow-pow\n";
    }
};
class EnemyC {
public:
    void loop() {
        cout << "KABOOM\n";
    }
};

vector <Enemy*> enemies;

int main() {
    enemies.push_back((Enemy*) new EnemyA());
    enemies.push_back((Enemy*) new EnemyB());
    enemies.push_back((Enemy*) new EnemyC());

    for (Enemy* i : enemies) {
        i->loop();
    }
}

最佳答案

你忘了实际继承自 Enemy 类:

class Derivet : public Base {};

关于c++ - 访问冲突。 C++ 多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867764/

相关文章:

c++ - 简单的 2D 应用程序,在使用 glutBitmapCharacter 时遇到问题

c++ - 如何在此回调中用具有编译时类型检查的内容替换 void 指针?

c++ - 如何让CPP核心功能成为我类的 friend

c++ - 使用 if(char == '\n' ) 重置变量 C++

c++ - 卡在 C++ 函数和数组上

javascript - 如何避免困惑的嵌套 if-else 或 switch

c++ - 为什么使用与父一起声明的 std::function 在与 child 一起使用时会显示错误?

java - 为什么 Java 认为我的构造函数调用不明确?

c++ - 如何根据基类对象中的变量值在派生类中分配变量?

C++将局部变量存储到 vector 中可防止它在超出范围时被破坏