| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:大家好!我变这个程序时,不知道如何用指向对象的指针数组。请帮忙改下啊!
只看楼主 加入收藏
wuxia111111
Rank: 2
等 级:论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:5 
大家好!我变这个程序时,不知道如何用指向对象的指针数组。请帮忙改下啊!
/*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;
}

  
搜索更多相关主题的帖子: 动物类 public identify 种类 
2012-11-24 00:14
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:10 
程序代码:
/*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;
    // 指向动物园圈养的动物对象的指针数组
};
int Zoo::numAnimals;
Zoo::Zoo(int max)
{
    maxAnimals=max;
    residents = new Animal*[maxAnimals];
}
int Zoo::Accept(Animal *a)
{
    if(numAnimals<maxAnimals)
    {   
        cout<<"该动物被成功接收!"<<endl;
        residents[numAnimals] = a;
        numAnimals++;
    }
    else
    {
        cout<<"动物园已满,不能再接收!接收失败!"<<endl;
        return -1;
    }

    return 0;
}
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();*/
    for (int i = 0; i != numAnimals; ++i)
    {
        residents[i]->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;
}
2012-11-24 13:15
wuxia111111
Rank: 2
等 级:论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
收藏
得分:0 
回复 2楼 寒风中的细雨
谢谢啦!
收到的鲜花
  • 寒风中的细雨2012-11-24 21:42 送鲜花  10朵   附言:没事, 程序中用到了几个比较难的小知识点
  • 寒风中的细雨2012-11-24 21:43 送鲜花  10朵   附言:Lz, 自己要细细的体会, 加深映像...
2012-11-24 21:27
wuxia111111
Rank: 2
等 级:论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
收藏
得分:0 
回复 3楼 wuxia111111
嗯!我好好看了一下!明白啦!谢谢啦!
2012-11-25 13:13
mmmmmmmmmmmm
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:8
帖 子:388
专家分:1809
注 册:2012-11-2
收藏
得分:10 
学习了 刚刚看了下  


继承类里面的
程序代码:
void identify()
    {
        cout<<"狗:\t"<<"name"<<endl;
    }


name那里多了引号哈

我们的目标只有一个:消灭0回复!
while(1)
++money;
2012-11-26 09:57
wuxia111111
Rank: 2
等 级:论坛游民
帖 子:32
专家分:60
注 册:2012-11-18
收藏
得分:0 
回复 5楼 mmmmmmmmmmmm
嗯。我那写错了,不应该加""的。
2012-11-28 23:56
快速回复:大家好!我变这个程序时,不知道如何用指向对象的指针数组。请帮忙改下 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029110 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved