1 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
(1)改正后的代碼如下(改動(dòng)的地方見(jiàn)注釋)
#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);//這里加一個(gè)SetValue重載函數(shù)
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)將上面程序中的友元改成普通函數(shù)后的代碼如下(改動(dòng)的地方見(jiàn)注釋,不需要增加成員函數(shù))
#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);//這里函數(shù)名前加對(duì)象名
peppy.SetValue(peppy, 7, 9);//這里函數(shù)名前加對(duì)象名
}
添加回答
舉報(bào)