/*在此基础上开发一个小区养狗管理程序。功能包括:
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;
}
这里面还有错误该怎样改呀,还有能优化一下程序就更不错了
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
qfl_sdu 2021-06-06 16:48关注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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报