C ++ vector :: push_back C1001内部编译器错误

时间:2015-05-17 08:09:14

标签: c++ visual-studio stl

我在Visual Studio 2013上玩C ++和SDL2。 一切正常,直到这行代码:

Obstacle o = Obstacle(Vector2f(SCENE_WIDTH, 0), Vector2f(1, 1));
**obstacles1->push_back(o);**

如果我注释掉push_back行,那么一切正常。 现在来疯狂的事情。 如果我从Obstacle类中删除所有虚拟修饰符,则push_back函数会起作用并且不会抛出错误。

这样会抛出错误:

class Obstacle : public Rectangle
{
public:
    Obstacle(const Vector2f& position, const Vector2f& size);
    Obstacle();
    virtual ~Obstacle();
public:
    virtual void update(float dt);
    virtual void render() const;
};

这样就可以了:

class Obstacle : public Rectangle
{
public:
    Obstacle(const Vector2f& position, const Vector2f& size);
    Obstacle();
    ~Obstacle();
public:
    void update(float dt);
    void render() const;
};

如何解决它,所以我可以让我的障碍有虚拟功能?

编辑: 如果我在Rectangle类中创建一个函数或析构函数virtual,我也会得到错误。

0 个答案:

没有答案