operador c++

Tengo esta clase,con la que quiero probar a declarar un operador externo a la clase ,con este código que pongo a continuación me dice "no hay coincidencia para ‘operator+’ en ‘ent + ent2'",que me falla?
# include <iostream>

class entero{
   public:
      entero();
      entero(int n);
      int getN();
   private:
      int num;
};


#include "entero.h"
entero::entero(){
    num=0;
}
entero::entero(int n){
    num=n;
}
int entero::getN(){
    return num;
}
entero& operator +(entero& a,entero& b){
   int na=a.getN();
   int nb=b.getN();
   entero nuevo(na+nb);
   return nuevo;
}


# include "entero.h"

int main(){
   entero ent(5);
   entero ent2(6);
   int n=ent+ent2;
   std::cout<<n<<std::endl;
}
Sin probarlo te puedo decir que te sobra un espacio. es "operator+" y no "operator +"
No tienes que hacer el prototipo dentro de la clase? ¬_¬
amchacon escribió:No tienes que hacer el prototipo dentro de la clase? ¬_¬


No tiene porque. Si lo hace fuera de la clase tambien es valido.

¿Has definido operador de conversion de entero a int? Si no, no vas a poder guardar el resultado de la suma en n. Por eso da error.

El compilador esta buscando un "int operator +(entero& a,entero& b)" y tu has definido un "entero& operator +(entero& a,entero& b)". Y como no tienes conversion definida de entero a int para usar tu operador, el compilador grita.
3 respuestas