【问题标题】:C++: Errors while compilation of C++ programC++:编译 C++ 程序时出错
【发布时间】:2016-03-06 05:28:33
【问题描述】:

我正在制作一个具有全局函数用法的类 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 但是我在编译时遇到了构建错误:
错误 C2805 二进制“运算符 fr:未声明的标识符
get_num 的左边必须是 struct/union/class

【问题讨论】:

  • 这是您得到的唯一错误吗?当您定义 operator&lt;&lt; 函数时,Fraction 没有被声明?您知道在 C++ 中必须在使用符号之前声明它们吗?
  • 您还应该通过 const 引用获取 Fraction
  • @DROY:谢谢 .. 将在发布前检查堆栈溢出其他线程:)

标签: c++ operator-overloading


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多