C/Visual C - Devolver un objeto o un puntero al objeto

 
Vista:

Devolver un objeto o un puntero al objeto

Publicado por manu (1 intervención) el 26/11/2003 17:53:08
Si tengo un metodo
A metodo()
{
A a;
return a
}
Al retornar el valor se llama al constructor copia, pero mo es lo que quiero porque el objeto es muy grande. ¿Puedo hacer?
A &metodo()
{
A a;
return a
}

Y de esta manera que no se llama al constructor copia, o sea, hacer algo similar que cuando pasamos un argumento así
metodo( A& a)
Y de esta manera pasamos la referencia

Gracias

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Devolver un objeto o un puntero al objeto

Publicado por chuidiang (677 intervenciones) el 27/11/2003 11:46:42
No puedes hacer eso exactamente. a es local al metodo y si devuelves una referencia a ella, cuando salgas del metodo ya no existe.

Una opción es devolver un puntero
A *metodo ()
{
A a = new A();
return a;
}

El que llame deberá hacer delete cuando no lo necesite.

Otra opción es que el de fuera pase la clase como parámetro y el método la rellene

void metodo (A &a)
{
a.atributos = ... ; // rellenar a
}

y para llamarla

A a;
clase.metodo (a);

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar