u010235951 2013-05-30 12:09 采纳率: 0%
浏览 1952

初学者一个关于类的问题

编译,链接都没有问题.没有得到想要结果,我找不出错在哪,请大家帮看看

头文件

# include <string>
using namespace std;
# include <iostream>
# include <vector>
class Animal
{
public:
    Animal (const char*n): name(n) {}
    virtual ~Animal() {}
    virtual void read ()=0;
protected:
    string name;
};

class Panda:public Animal
{
    friend class Zoo;
public:
    Panda (const char*n): Animal(n) {}
    void read ()
    {
        cout<<"name "<<name<<"     "
            <<"speices panda"<<endl;
    }

};

class Tiger:public Animal
{
    friend class Zoo;
public:
Tiger (const char*n): Animal(n) {}
    void read ()
    {
        cout<<"name "<<name<<"     "
            <<"speices tiger"<<endl;
    }
};

class Monkey:public Animal
{
    friend class Zoo;
public:
Monkey (const char*n): Animal(n) {}
    void read ()
    {
        cout<<"name "<<name<<"     "
            <<"speices monkey"<<endl;
    }
};

class Zoo
{
public:
    Zoo(): contain(0) {}
    Zoo(int c): contain(c), room(c){}
    void ListAnimals();
    int Accept(Animal*);
    void Release (int);
    ~Zoo();
private:
    int contain;
    vector<Animal*> room;

};
==================================================
# include "Animal.h"
using namespace std;

int Zoo::Accept(Animal* one)
{
    vector<Animal*>::size_type i=0;
    Animal* record =one;
    room.push_back(record);
    i = room.size();
    return i;
}
void Zoo::Release(int p)
{
    room[p] = 0;
}
void Zoo::ListAnimals()
{
    int count = 0;
    for(int i=0;i<contain;++i)
    {
        if(room[i] != 0)
        {
            room[i]->read;
            cout<<"position "<<i<<endl;
            ++count;
        }

    }
    cout<<"toatl animals are "<<count<<endl;
}

Zoo::~Zoo()
{
    for(int j=0;j<contain;++j)
    {
        if(room[j]!=0)
        {
            delete room[j];
        }
    }
}

# include "Animal.h"
using namespace std;

int main()
{
   Panda p[1]={Panda("Rudy")};
   Tiger t[2]={Tiger("Sam"),Tiger("Princess")};
   Monkey m[3]={Monkey("Nancy"),Monkey("CaroLine"),Monkey("Bob")};

   Zoo Z(10);               //初始化动物园对象,其最多可饲养10只动物,缺省饲养了0只动物
   for(int i=0;i<2;i++)
   {
       Z.Accept(&t[i]);     //向动物园移入要饲养的动物,并返回该动物所在的位置
       Z.Accept(&m[i]);
   }
   int position=Z.Accept(&p[1]); 
   Z.ListAnimals();         //列出动物园当前饲养了多少只动物, 每只动物所在的位置及其种类和姓名
   Z.Release(position);     //从动物园移走指定位置的动物
   Z.ListAnimals();
   Z.Accept(&m[2]);
   Z.ListAnimals();
   return 0;
}
  • 写回答

2条回答

  • Michael@Wu 2013-06-13 03:53
    关注

    倒数第7行应该是p[0]

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮