c ++,无法实例化抽象类

时间:2017-04-14 12:10:27

标签: c++ inheritance

我有一个名为Enemy的课程,另一个叫做groundenemy1。我一直得到同样的错误不能"实例化抽象类",这些是我的两个类,我在互联网上搜索但我无法解决它。我希望有人可以帮助我。

#pragma once
#include "Vector2f.h"
#include "CollisionManager.h"
class Enemy
{
public:
    Enemy(CollisionManager &collmanager);
    virtual ~Enemy();
    void Move(Vector2f move);
    void Update(float elapsedsec);
    virtual void Draw() =0;
protected:
    bool m_Jump;
    Rectf m_Shape;
    Vector2f m_Velocity,m_InputVelocity;
    CollisionManager m_CollManager;
    float m_Jumpspeed, m_Acceleration,m_JumpCooldown,m_WalkSpeed;
};

class GroundEnemie1 :public Enemy
{
public:
    GroundEnemie1(CollisionManager &collmanager,Sprite &sprite,Rectf shape);
    virtual ~GroundEnemie1();
    void Draw() override;
protected:
    Sprite m_Sprite;
};

1 个答案:

答案 0 :(得分:2)

你不能从抽象类声明一个对象

因为virtual void Draw() = 0函数你的Enemy类是一个抽象类但你可以实例化一个对象GroundEnemie1

轻松理解

你的GroundEnemie1类可以叫做Dog,还有一个Cat类,一个Fish类。所有这些类都继承自Animal(Enemy for you)。 你不能直接实例化动物,你必须更准确,你要根据你的需要来养狗,猫,鱼,