我试图定义一个继承系统,其中一个名为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”的对象”。我相信这是由于在基类中实现了纯虚函数。
答案 0 :(得分:1)
您必须实现抽象基类Animal
的 all 个纯虚方法,否则Cow
还将是抽象类。当前,您的Cow
不知道如何fly
或jump
,因此编译器不允许您创建任何Cow
实例(担心您可能会尝试使其fly
或jump
)。