Error en operador c++

Z

Tengo este operador

Cadena& operator+(const Cadena& c1,const Cadena c2){
	char* nueva=new char[c1.tam+c2.tam+1];
	strcpy(nueva,c1.v);
	strcat(nueva,c2.v);
	return Cadena(nueva);//el error es aqui
}

El error en el return me dice invalid initialization of non-const reference of type ‘Cadena&’ from an rvalue of type ‘Cadena’ ..y no se que es..

Así si que funciona ( con warning per funciona)

Cadena& operator+(const Cadena& c1,const Cadena c2){
	char* nueva=new char[c1.tam+c2.tam+1];
	strcpy(nueva,c1.v);
	strcat(nueva,c2.v);
	Cadena n(nueva);
	return n;
}
r2d2rigo

No tienes que devolver una referencia, la firma de la funcion es esta:

Cadena operator+(const Cadena& c1, const Cadena& c2)

Usuarios habituales