[C con Clase] DUDA CONTENEDOR

Pedro Rodríguez González sr.whiteskull en hotmail.com
Mar Jun 23 20:09:40 CEST 2009


Gracias David y gracias a Steve...

FUNCIONA SIN PROBLEMAS!!!
MiContenedor Lista()
{
   MiContenedor MC;
   ...
   return MC;
}
...
pero y si quisiera que me devolviera una referencia sin pasarle un argumento 
...
 MiContenedor& Lista( /* MiContenedor &MC */ )
 {
    ...
    return MC;
 }
...
...
Queda otra opción, alguna idea? de todas formas escapo con ese arreglo... pero lo ideal sería lo segundo propuesto

> Date: Tue, 23 Jun 2009 13:34:24 -0400
> From: srd4121 en njit.edu
> To: cconclase en listas.conclase.net
> Subject: Re: [C con Clase] DUDA CONTENEDOR
> 
> Hola Pedro,
> 
> Pedro Rodríguez González wrote:
> > Que tal de nuevo, pues aquí con nuevas dudillas! Resulta que éste 
> > ejercicio debe devolver un tipo de contenedor, usando un conjunto 
> > asociado tipo map, MiContenedor, todo funciona bien aparentemente,
> > pero el problema es que me da fallo de segmentación al intentar
> > extraer un atributo de una clase contenida, mis sospechas apuntan a
> > éste método, alguien me puede aportar algún detalle para mejorar el
> > susidicho método...
> > 
> 
> Veamos el código fuente que interesa.
> 
> > ...
> > ...
> > MiContenedor& Lista()
> > {
> >     MiContenedor MC,*pMC=&MC;
> > 
> > ... // inserto clave y datos a MC por medio de "iteratores"
> > ...
> > 
> >     return *pMC;
> 
> Aquí está el problema. Estás retornando la referencia a un objeto local 
> a esta función. Recuerda que las variables son eliminadas al terminar el 
> ámbito en que fueron creadas. Por consiguiente, tanto 'MC' como 'pMC' 
> serán eliminadas al retornar de esta función.
> 
> Deberías retornar un objeto nuevo. Por ejemplo,
> 
> MiContenedor Lista()
> {
>    ...
>    return MC;
> }
> 
> Con esto, retornamos el objeto 'MC', pero un nuevo objeto es instanciado 
> y 'MC' es copiado a tal objeto temporal.
> 
> Otra solución es pasar el objeto como parámetro a 'Lista()'. De esta 
> manera, el objeto existirá fuera de esta función. Por ejemplo,
> 
> MiContenedor& Lista( MiContenedor &MC )
> {
>    ...
>    return MC;
> }
> 
> Así, sí podemos retornar una referencia a un objeto ya instanciado, 
> porque tal objeto existe antes y después de ejecutar esta función. Por 
> lo tanto, la referencia es correcta.
> 
> 
> Espero haber aclarado la duda.
> 
> Steven
> 
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090623/a4aad306/attachment.html>


Más información sobre la lista de distribución Cconclase