Duda [Sobrecarga de operadores]

Iniciado por Abril7, 22 Noviembre 2016, 21:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Abril7

BUENOS DÍAS,DEBO ACLARAR QUE YA HABIA COMPILADO MI PROGRAMA SIN ERRORES EN UN MISMO ARCHIVO, PERO A LA HORA DE SEPARLO POR CLASES ME DA UN ERROR.

LA CLASE QUE ME DA ERROR ESTA COMPUESTA ASÍ:

#ifndef PREFERENCIA_H
#define PREFERENCIA_H
#include <iostream>
#include <string.h>
#include <fstream>
#include <stdlib.h>
#include "Cancion.h"
#include <ctype.h>

using namespace std;

class Preferencia
{
    public:
        float calidad, gusto;

        Preferencia(const float a,const float b)
        {
            calidad= a;
            gusto= b;
        }
};
Preferencia& operator +(const Preferencia &p1,const Preferencia &p2)
{
  return *(new Preferencia(p1.calidad + p2.calidad, p1.gusto + p2.gusto) );
}

#endif // PREFERENCIA_H

LA MANERA EN LA QUE LA USO EN EL MAIN:

    Preferencia A(50, 75 );
    Preferencia B(150, 175 );
    Preferencia C = A + B;

    cout << "A = " << A.calidad << ',' << A.gusto << "\n";
    cout << "B = " << B.calidad << ',' << B.gusto << "\n";
    cout << "C = " << C.calidad << ',' << C.gusto << "\n";
    cout<<endl;


NO TENIA NINGUN ERORR ANTES DE PONER ESA CLASE POR SEPARADA.

Esto es lo que me dice:

warning:suggest parentheses around assigment used as truth value (-Wparentheses)
In function 'ZN11PreferenciaCIEff':
multiple definition of 'operator+(Preferencia const&, Preferencia const&)' [line 24]
first defined here[line 24]
error:Id returned 1 exist status



ivancea96

El #include "preferencia.h" lo haces varias veces, en varios .cpp quizás?