creas el objeto en el heap....<br><br><pre>MiContenedor Lista()<br>{<br>   MiContenedor *MC;<br>   MC=new MiContenedor();<br>   ...<br>   return MC;<br>}</pre><br>asi la variable no se destruye despues que termina la funcion.<br>
eventualmente tenes que destruir esa variable o te vas a quedar sin memoria.<br>memory leak se llama.<br>David<br><br><div class="gmail_quote">El 23 de junio de 2009 15:09, Pedro Rodríguez González <span dir="ltr"><<a href="mailto:sr.whiteskull@hotmail.com">sr.whiteskull@hotmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



<div>
Gracias David y gracias a Steve...<br><br>FUNCIONA SIN PROBLEMAS!!!<br><pre><div class="im">MiContenedor Lista()<br>{<br>   MiContenedor MC;<br>   ...<br>   return MC;<br>}<br></div>...<br>pero y si quisiera que me devolviera una referencia sin pasarle un argumento <br>
...<div class="im"><br> MiContenedor& Lista( /* MiContenedor &MC */ )<br> {<br>    ...<br>    return MC;<br> }<br></div></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: <a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a><br>> To: <a href="mailto:cconclase@listas.conclase.net" target="_blank">cconclase@listas.conclase.net</a><br>
> Subject: Re: [C con Clase] DUDA CONTENEDOR<div><div></div><div class="h5"><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 <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
> <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>> Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
<br></div></div><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="_blank">Learn more!</a></div>
<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>
(")_(")signature to help him gain world domination. <br><br>