Estaba haciendo un struct que encapsulara un vector que
representa unas coordenadas en el espacio. Todo va bien hasta
que llego al operador de asignación y al operador + que no
funciona del todo bien.
El código es el siguiente y el error de compilación está debajo:
Código
#ifndef _PUNTO_H_ #define _PUNTO_H_ #include <vector> using namespace std; struct Punto{ Punto(int tam){ this->_coord=vector<double>(tam,0); } Punto(vector<double> v){ this->_coord=v; } Punto(const Punto& p){ this->_coord=p._coord; } //operadores Punto& operator= (const Punto& p){ Punto pp(p._coord.size()); //ERROR pp._coord=p._coord; return pp; } Punto& operator+ (const Punto& p){ vector<double> pp = this->_coord; for(int i=0; i<this->_coord.size(); i++){ pp[i]+=p._coord[i]; } return Punto(pp); //ERROR } vector<double> _coord; }; #endif //_PUNTO_H_
El error que da en compilación es el siguiente:
Código:
punto.h: En la función miembro ‘Punto& Punto::operator=(const Punto&)’:
punto.h:29:11: aviso: se devolvió una referencia a la variable local ‘pp’ [activado por defecto]
punto.h: En la función miembro ‘Punto& Punto::operator+(const Punto&)’:
punto.h:40:22: error: inicialización inválida de una referencia que no es constante de tipo ‘Punto&’ desde un r-valor de tipo ‘Punto’
Donde las lineas corresponden a:
Código:
Linea 29: Punto pp(p._coord.size());
Línea 40: return Punto(pp);
Espero sus respuestas.
Muchas gracias!
Luiggy2