首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于友元函数用法失误

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

关于友元函数用法出错
本帖最后由 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;
};

热点排行