我在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,我也会得到错误。