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

#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)将上面程序中的友元改成普通函数,为此增加访问类中保护数据的成员函数

人到中年有点甜
浏览 162回答 1
1回答

沧海一幻觉

(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改成SetValuefriend 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.itsWeightta.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);//这里去掉friendvoid SetValue(Animal&, int,int);//这里去掉friendprotected: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);//这里函数名前加对象名}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java