小编Dre*_*res的帖子

如何输出乘以用户创建的类c ++

我正在为一个用户创建的有理数类重写一个赋值重载操作符,但不能在同一行中输出两个"Rational"对象.例如:

std::cout<<5*10<<std::endl;
Run Code Online (Sandbox Code Playgroud)

输出50就好了.但是,当我尝试做的时候,

std::cout<<Rational_1*Rational_2<<std::endl;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.如果我改为将值赋给第三个理性,例如

Rational_3=Rational_1*Rational_2;
std::cout<<Rational_3<<std::endl;
Run Code Online (Sandbox Code Playgroud)

然后程序输出就好了.我把它带到了我的教授那里,但即使他不知道如何解决它.关于为什么会发生这种情况的任何解释都会有所帮助.我想知道为什么这是一个问题,而不仅仅是简单地获得一段有用的代码.

#include <iostream>
using namespace std;
class Rational{
    public:
        Rational();
        Rational(int whole_number);
        Rational(int numerator_input,int denominator_input);
        friend Rational operator *(Rational rat_1, Rational rat_2);
    `   friend ostream& operator <<(ostream& out,Rational& output);
        void simplify();
    private:
        int numerator,denominator;
};

int main(){
    Rational r1(2,3),r2(3,4),r3;
    r3=r1*r2;
    cout<<r3<<endl;
    //cout<<r1*r2<<endl;

return 0;
}

Rational::Rational(){
    numerator=0;
    denominator=1;
}

Rational::Rational(int whole_number){
    numerator=whole_number;
    denominator=1;
}

Rational::Rational(int numerator_input,int denominator_input){
    numerator=numerator_input;
    if(denominator_input==0){
        cout<<"A rational number can not have a 0 in the denominator\n";
        exit (5);
    } …
Run Code Online (Sandbox Code Playgroud)

c++ class operator-overloading

5
推荐指数
1
解决办法
85
查看次数

标签 统计

c++ ×1

class ×1

operator-overloading ×1