/*在此基础上开发一个小区养狗管理程序。功能包括:
1.某主人认养一只狗
2.某主人把自己养的狗转让给别的主人
3.能正确显示某主人养了哪些狗,以及某狗的主人是谁*/
#include<iostream>
using namespace std;
class CMaster;
class CDog
{
int id;
CMaster* master;
public:
CDod(int id_);
void setMaster(CMaster &m);
void print();
};
class CMaster
{
int id;
CDog *dogs[10];
int dogNum;
public:
CMaster();//无参构造函数
CMaster(int id_);//有参构造函数
int getId();
void setDog(CDog *d);
void delDog(CDog *d);//delete
void print();
};
CMaster::CMaster()
{
id=0;
}
CMaster::CMaster(int id_)
{
id=id_;dogNum=0;
}
int CMaster::getId()
{
return id;
}
void CMaster::setDog(CDog *d)
{
dogs[dogNum++]=d;
dogs[dogNum-1]->setMaster(*this);
}
void CMaster::delDog(CDog *d)
{
int i,j;
for(i=0;i<dogNum;i++)
if(dogs[i]==d)
{
for(j=i;j<dogNum-1;j++)
dogs[j]=dogs[j+1];
dogNum--;
break;
}
}
void CMaster::print()
{
cout<<"masterid="<<id<<";"<<endl;
for(int i=0;i<dogNum;i++)
{
cout<<i<<":";
dogs[i]->print();
}
cout<<endl;
}
CDog::CDog(int id_)
{
id=id_;
}
void CDog::setMaster(CMaster &m)
{
master=&m;
}
void CDog::print()
{
cout<<"dogid="<<id<<" "<<"master="<<master->getId()<<endl;
}
int main()
{
CMaster m1(2),m2(2);
CDog dog1(10),dog2(20);
m1.setDog(&dog1);
m1.setDog(&dog2);
m1.print();
m2.print();
cout<<"******************************"<<endl;
m2.setDog(&dog1);
m1.delDog(&dog1);
m1.print();
cout<<"******************************"<<endl;
m2.print();
cout<<"******************************"<<endl;
dog1.print();
dog2.print();
return 1;
}
CDog的构造函数你拼错了:
CDod(int id_); 应该是CDog(int id_);
代码如下:
/*在此基础上开发一个小区养狗管理程序。功能包括:
1.某主人认养一只狗
2.某主人把自己养的狗转让给别的主人
3.能正确显示某主人养了哪些狗,以及某狗的主人是谁*/
#include<iostream>
using namespace std;
class CMaster;
class CDog
{
int id;
CMaster* master;
public:
CDog(int id_); //修改1CDod 名字写错了
void setMaster(CMaster &m);
void print();
};
class CMaster
{
int id;
CDog *dogs[10];
int dogNum;
public:
CMaster();//无参构造函数
CMaster(int id_);//有参构造函数
int getId();
void setDog(CDog *d);
void delDog(CDog *d);//delete
void print();
};
CMaster::CMaster()
{
id=0;
}
CMaster::CMaster(int id_)
{
id=id_;dogNum=0;
}
int CMaster::getId()
{
return id;
}
void CMaster::setDog(CDog *d)
{
dogs[dogNum++]=d;
dogs[dogNum-1]->setMaster(*this);
}
void CMaster::delDog(CDog *d)
{
int i,j;
for(i=0;i<dogNum;i++)
if(dogs[i]==d)
{
for(j=i;j<dogNum-1;j++)
dogs[j]=dogs[j+1];
dogNum--;
break;
}
}
void CMaster::print()
{
cout<<"masterid="<<id<<";"<<endl;
for(int i=0;i<dogNum;i++)
{
cout<<i<<":";
dogs[i]->print();
}
cout<<endl;
}
CDog::CDog(int id_)
{
id=id_;
}
void CDog::setMaster(CMaster &m)
{
master=&m;
}
void CDog::print()
{
cout<<"dogid="<<id<<" "<<"master="<<master->getId()<<endl;
}
int main()
{
CMaster m1(2),m2(2);
CDog dog1(10),dog2(20);
m1.setDog(&dog1);
m1.setDog(&dog2);
m1.print();
m2.print();
cout<<"******************************"<<endl;
m2.setDog(&dog1);
m1.delDog(&dog1);
m1.print();
cout<<"******************************"<<endl;
m2.print();
cout<<"******************************"<<endl;
dog1.print();
dog2.print();
return 1;
}