Buenas noches!
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:
El error que da en compilación es el siguiente:
Donde las lineas corresponden a:
Espero sus respuestas.
Muchas gracias!
Luiggy2
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 (cpp) [Seleccionar]
#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 [Seleccionar]
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 [Seleccionar]
Linea 29: Punto pp(p._coord.size());
Línea 40: return Punto(pp);
Espero sus respuestas.
Muchas gracias!
Luiggy2