大家好!我变这个程序时,不知道如何用指向对象的指针数组。请帮忙改下啊!
/*1.实验要求:定义一个类Animal,该类中可以存放动物的名字,并有一个identify函数用于显示动物的种类。
定义两个类Cat和Dog,都继承自Animal,并重载identify函数,不但要显示动物的种类,还要显示动物的名字。
定义Tiger类,继承自Cat,重载identify函数,显示动物的种类和名字。
定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类及相关函数。注意指针虚函数的用法。
class Zoo {
public:
Zoo(int max);
~Zoo(){ delete residents; }
int Accept(Animal *a); //接收动物
void ListAnimals();//显示动物园所有的动物
private:
int maxAnimals; //动物园能最多圈养的动物数
int numAnimals; //动物园当前圈养的动物数
Animal **residents;// 指向动物园圈养的动物对象的指针数组
}; */
#include<iostream>
#include<string>
using namespace std;
class Animal{
protected:
string name;
public:
Animal(string n)
{name=n;}
virtual void identify()
{}
};
class Cat:public Animal{
public:
Cat(string n):Animal(n)
{}
void identify()
{
cout<<"猫:\t"<<"name"<<endl;
}
};
class Dog:public Animal{
public:
Dog(string n):Animal(n)
{}
void identify()
{
cout<<"狗:\t"<<"name"<<endl;
}
};
class Tiger:public Cat{
public:
Tiger(string n):Cat(n)
{}
void identify()
{
cout<<"老虎:\t"<<"name"<<endl;
}
};
class Zoo
{
public:
Zoo(int max);//max为动物园能圈养的动物数
~Zoo(){ delete residents; }
int Accept(Animal *a);//接收动物
void ListAnimals();//显示动物园所有的动物
private:
int maxAnimals; //动物园能最多圈养的动物数
static int numAnimals; //动物园当前圈养的动物数
Animal **residents;
// 指向动物园圈养的动物对象的指针数组
};
Zoo::Zoo(int max)
{ maxAnimals=max;
}
int Zoo::Accept(Animal *a)
{
if(numAnimals<maxAnimals)
{ cout<<"该动物被成功接收!"<<endl;
numAnimals++;
}
else
cout<<"动物园已满,不能再接收!接收失败!"<<endl;
}
void Zoo::ListAnimals(Cat &a,Dog &b,Tiger &c)
{ *residents[1]=&b;
*residents[1]->identify();
*residents[2]=&c;
*residents[2]->identify();
*residents[0]=&a;
*residents[0]->identify();
}
static int numAnimals=0;
int main()
{
Cat a("咪咪");
Dog b("汪汪");
Tiger c("小可爱");
Zoo d(4);
d.Accept(&a);
d. Accept(&b);
d.Accept(&c);
d.ListAnimals(a,b,c);
return 0;
}