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);//這里函數名前加對象名
}
添加回答
舉報


