读书人

关于友元函数用法失误

发布时间: 2013-04-26 16:27:53 作者: rapoo

关于友元函数用法出错
本帖最后由 tianshilei1992 于 2013-04-24 16:19:08 编辑


class Fraction
{
public:
Fraction(int t, int b);
const Fraction operator+(const Fraction&);
const Fraction operator-(const Fraction&);
const Fraction operator*(const Fraction&);
const Fraction operator/(const Fraction&);
friend iFraction& convertF(Fraction&)
protected:
int top, bottom;
};

class iFraction : public Fraction
{
public:
iFraction(int, int, int);
const iFraction operator+(const iFraction&);
const iFraction operator-(const iFraction&);
const iFraction operator*(const iFraction&);
const iFraction operator/(const iFraction&);
private:
int integer, top, bottom;
};

大家帮我看看,我的第一个类的友元函数总是提示出错,提示:不允许在数据声明中使用“friend”
我想做的就是写一个函数convertF,返回值是iFraction(Fraction类的子类),参数是Fraction类引用,但是总是出错……所以不知道该咋办了……
[解决办法]
在class Fraction之前,给出如下前置声明即可:
class iFraction;
[解决办法]

class iFraction;//前置声明

class Fraction
{
public:
Fraction(int t, int b);
const Fraction operator+(const Fraction&);
const Fraction operator-(const Fraction&);
const Fraction operator*(const Fraction&);
const Fraction operator/(const Fraction&);
friend iFraction& convertF(Fraction&);//iFraction都还没声明,不能用它作为返回值。
protected:
int top, bottom;
};

class iFraction : public Fraction
{
public:
iFraction(int, int, int);
const iFraction operator+(const iFraction&);
const iFraction operator-(const iFraction&);
const iFraction operator*(const iFraction&);
const iFraction operator/(const iFraction&);
private:
int integer, top, bottom;
};

读书人网 >C++

热点推荐