一杰更比六杰强 2021-06-23 11:06 采纳率: 100%
浏览 109
已采纳

C++运算符重载 类型不匹配问题

// 重载输入运算符1
istream& operator >> (istream& in, RationalNumber& x)
{
	in >> x.numerator >> x.denominator;
	return in;
}


// 重载输入运算符2
istream& operator >> (istream& in, RationalNumber& x)
{
	in >> x.getNumerator() >> x.getDenominator();
	return in;
}
// 有理数类
class RationalNumber {
private:
	int numerator;    // 分子
	int denominator;  // 分母
public:
	// 列表初始化[初值列]
	RationalNumber();
	RationalNumber(int , int);
	void reSet(int, int);              // 有理数重赋值
	void print();                      // 输出函数	
	int getNumerator() 
	{
		return numerator;
	}
	int getDenominator() 
	{
		return denominator;
	}
};

----------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------

如题VS2017:

输入运算符1可以匹配但是输入运算符2不能匹配,这是什么原因呢,,,

int &_Val 又是什么意思呢,,,

  • 写回答

3条回答 默认 最新

  • 忆渊 2021-06-23 11:17
    关注

    重载为友元函数,注意分清ostream和istream

    class RationalNumber {
    private:
        int numerator;    // 分子
        int denominator;  // 分母
    public:
        // 列表初始化[初值列]
        RationalNumber();
        RationalNumber(int, int);
        void reSet(int, int);              // 有理数重赋值
        void print();                      // 输出函数    
        int getNumerator()
        {
            return numerator;
        }
        int getDenominator()
        {
            return denominator;
        }
        // 重载输入运算符1
        friend istream& operator >> (istream& in, RationalNumber& x)
        {
            in >> x.numerator >> x.denominator;
            return in;
        }

        // 重载输入运算符2
        friend  ostream& operator << (ostream& out, RationalNumber& x)
        {
            out << x.getNumerator() << x.getDenominator();
            return out;
        }
    };

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)