为了账号安全,请及时绑定邮箱和手机立即绑定

如下代码有什么错误,请问该怎么改正它?

如下代码有什么错误,请问该怎么改正它?

人到中年有点甜 2022-12-17 17:13:30
#include<iostream>using namespace std;class Animal;void SetValue(Animal&, int);void SetValue(Animal&,int, int);class Animal{public:friend void setValue(Animal&, int);protected:int itsWeight;int itsAge;};void SetValue(Animal& ta, int tw){ta.itsWeight = tw;}void SetValue(Animal& ta, int tw, int tn){ta.itsWeught = tw;ta.itsAge = tn;}int main(){Animal peppy;SetValue(peppy, 5);SetValue(peppy, 7, 9);}(2)将上面程序中的友元改成普通函数,为此增加访问类中保护数据的成员函数
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

(1)改正后的代码如下(改动的地方见注释)

#include<iostream>

using namespace std;

class Animal;

void SetValue(Animal&, int);

void SetValue(Animal&,int, int);

class Animal

{

public:

friend void SetValue(Animal&, int);//这里setValue改成SetValue

friend void SetValue(Animal&, int,int);//这里加一个SetValue重载函数

protected:

int itsWeight;

int itsAge;

};

void SetValue(Animal& ta, int tw)

{

ta.itsWeight = tw;

}

void SetValue(Animal& ta, int tw, int tn)

{

ta.itsWeight = tw;//这里ta.itsWeught改成ta.itsWeight

ta.itsAge = tn;

}

int main()

{

Animal peppy;

SetValue(peppy, 5);

SetValue(peppy, 7, 9);

}

(2)将上面程序中的友元改成普通函数后的代码如下(改动的地方见注释,不需要增加成员函数)

#include<iostream>

using namespace std;

class Animal;

void SetValue(Animal&, int);

void SetValue(Animal&,int, int);

class Animal

{

public:

void SetValue(Animal&, int);//这里去掉friend

void SetValue(Animal&, int,int);//这里去掉friend

protected:

int itsWeight;

int itsAge;

};

void Animal::SetValue(Animal& ta, int tw)//这里加类作用域

{

ta.itsWeight = tw;

}

void Animal::SetValue(Animal& ta, int tw, int tn)//这里加类作用域

{

ta.itsWeight = tw;

ta.itsAge = tn;

}

int main()

{

Animal peppy;

peppy.SetValue(peppy, 5);//这里函数名前加对象名

peppy.SetValue(peppy, 7, 9);//这里函数名前加对象名

}


 


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号