Operator overhead + c ++

3

I'm trying to create an operator overload +:

Racional Racional::operator+(const Racional& r) {

    Racional resultado;
    resultado.m_numerador = r.m_numerador + m_numerador;

    resultado.m_denominador = r.m_denominador + m_denominador;

    return resultado;
}

And at the time of doing the sum I jump an error:

void operar(const Racional &r1, const Racional &r2,Racional resultado, char op){
     if(op == '+'){
         resultado = r1 + r2;  //Aquí está el error: Ningún operador "+"coincide con estos operandos. 
}

Is the operator + wrong?

    
asked by Chariot 19.09.2018 в 14:31
source

1 answer

2

The r1 + r2 operation becomes r1.operator+(r2) . Operator overload requires that r1 is not const and that condition is not met, then there is no operator overload that is valid.

try leaving the function as const :

Racional Racional::operator+(const Racional& r) const {
//                                              ^^^^^
    
answered by 19.09.2018 / 14:39
source