不允许使用抽象类类型的对象

时间:2018-09-03 16:08:19

标签: c++ inheritance

我试图定义一个继承系统,其中一个名为Animal的基类具有虚拟函数,这些虚函数可以对派生类施加某些功能。派生类是动物的种类,即。牛,狗,猫。

我的界面的类概述:

class Animal
{
public:
   virtual void walk() = 0;
   virtual void fly() = 0;
   virtual void jump() = 0;
}

class Cow : public Animal
{
public:
   void walk();
}

void Cow::walk()
{
   //do something specific for cow
}

我想动态地将十个不同的物种保存为大小为十的数组。这是我想出的:

const int SIZE = 10;
Animal** myArray = new Animal*[SIZE];
myArray[0] = new Cow();

我收到此错误消息:“不允许使用抽象类类型为“ Cow”的对象”。我相信这是由于在基类中实现了纯虚函数。

1 个答案:

答案 0 :(得分:1)

您必须实现抽象基类Animal all 个纯虚方法,否则Cow还将是抽象类。当前,您的Cow不知道如何flyjump,因此编译器不允许您创建任何Cow实例(担心您可能会尝试使其flyjump)。