C ++:编译C ++程序时出错

时间:2016-03-06 05:28:33

标签: c++ operator-overloading

我正在制作一个具有全局函数用法的类Fraction 我的代码如下所示:

#include<iostream>
using namespace std;

ostream & operator<<(ostream & os, Fraction & fr)
{
    return os << fr.get_num() << '/' << fr.get_den();
}

class Fraction
{
private:
    int num, den;
public:
int get_num()
    {
        return num;
    }
    int get_den()
    {
        return den;
    }
};

主要功能有:`cout&lt;&lt; f2&lt;&lt; ENDL;
但是我在编译时会遇到构建错误:
错误C2805二进制'运算符&lt;&lt;'参数太少了 fr:未声明的标识符
get_num的左边必须是struct / union / class

1 个答案:

答案 0 :(得分:1)

您应该像这样更改代码的顺序:

class Fraction
{
private:
    int num, den;
public:
int get_num()
    {
        return num;
    }
    int get_den()
    {
        return den;
    }
};

ostream & operator<<(ostream & os, Fraction & fr)
{
    return os << fr.get_num() << '/' << fr.get_den();
}