<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Gracias David y gracias a Steve...<br><br>FUNCIONA SIN PROBLEMAS!!!<br><pre>MiContenedor Lista()<br>{<br>   MiContenedor MC;<br>   ...<br>   return MC;<br>}<br>...<br>pero y si quisiera que me devolviera una referencia sin pasarle un argumento <br>...<br> MiContenedor& Lista( /* MiContenedor &MC */ )<br> {<br>    ...<br>    return MC;<br> }<br></pre>...<br>...<br>Queda otra opción, alguna idea? de todas formas escapo con ese arreglo... pero lo ideal sería lo segundo propuesto<br><br>> Date: Tue, 23 Jun 2009 13:34:24 -0400<br>> From: srd4121@njit.edu<br>> To: cconclase@listas.conclase.net<br>> Subject: Re: [C con Clase] DUDA CONTENEDOR<br>> <br>> Hola Pedro,<br>> <br>> Pedro Rodríguez González wrote:<br>> > Que tal de nuevo, pues aquí con nuevas dudillas! Resulta que éste <br>> > ejercicio debe devolver un tipo de contenedor, usando un conjunto <br>> > asociado tipo map, MiContenedor, todo funciona bien aparentemente,<br>> > pero el problema es que me da fallo de segmentación al intentar<br>> > extraer un atributo de una clase contenida, mis sospechas apuntan a<br>> > éste método, alguien me puede aportar algún detalle para mejorar el<br>> > susidicho método...<br>> > <br>> <br>> Veamos el código fuente que interesa.<br>> <br>> > ...<br>> > ...<br>> > MiContenedor& Lista()<br>> > {<br>> >     MiContenedor MC,*pMC=&MC;<br>> > <br>> > ... // inserto clave y datos a MC por medio de "iteratores"<br>> > ...<br>> > <br>> >     return *pMC;<br>> <br>> Aquí está el problema. Estás retornando la referencia a un objeto local <br>> a esta función. Recuerda que las variables son eliminadas al terminar el <br>> ámbito en que fueron creadas. Por consiguiente, tanto 'MC' como 'pMC' <br>> serán eliminadas al retornar de esta función.<br>> <br>> Deberías retornar un objeto nuevo. Por ejemplo,<br>> <br>> MiContenedor Lista()<br>> {<br>>    ...<br>>    return MC;<br>> }<br>> <br>> Con esto, retornamos el objeto 'MC', pero un nuevo objeto es instanciado <br>> y 'MC' es copiado a tal objeto temporal.<br>> <br>> Otra solución es pasar el objeto como parámetro a 'Lista()'. De esta <br>> manera, el objeto existirá fuera de esta función. Por ejemplo,<br>> <br>> MiContenedor& Lista( MiContenedor &MC )<br>> {<br>>    ...<br>>    return MC;<br>> }<br>> <br>> Así, sí podemos retornar una referencia a un objeto ya instanciado, <br>> porque tal objeto existe antes y después de ejecutar esta función. Por <br>> lo tanto, la referencia es correcta.<br>> <br>> <br>> Espero haber aclarado la duda.<br>> <br>> Steven<br>> <br>> <br>> _______________________________________________<br>> Lista de correo Cconclase Cconclase@listas.conclase.net<br>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<br>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ<br><br /><hr />Explore the seven wonders of the world <a href='http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE' target='_new'>Learn more!</a></body>
</html>