[C con Clase] DUDA CONTENEDOR

David fire ddfire en gmail.com
Mie Jun 24 14:43:03 CEST 2009


horror!!!!!!!!
eso "funciona" pero es un horror....
no hay nada que te garantice que eso siempre va a funcionar, MC esta solo
dentro del scope de Lista() NADA fuera de Lista() deberia acceder si mañana
hacen un compilador mas exigente o que maneja la memoria de alguna otra
forma eso deja de funcionar.
mi opinion personal es que hacer que las cosas "funcionen" dista mucho de
hacer las cosas bien.

opcion uno
Lista(MiContenedor *MC)
{
   MC.clear()
   ... MC[Key]=Data;
   ...
 }

Opcion dos
*MiContenedor Lista()
{
  MiContenedor *MC=new MiContenedor ();
   MC->clear()
    ... (*MC)[Key]=Data;
   ...
return MC;
/*devolves un puntero alguien deberia ocuparse de ahcer un delete(MC) cuando
no se necesite mas o te vas a quedar sin memoria. */
 }




El 24 de junio de 2009 08:46, Pedro Rodríguez González <
sr.whiteskull en hotmail.com> escribió:

>  Al final* me quedé con esta opción* (la tercera ) ... *y para evitar la
> sobreescritura usé el "clear"* al contenedor, de ésta forma cada vez que
> se llama el método siempre queda vacío el contenedor... gracias Steve y a
> David por sus explicaciones... queda así:*
> *
> *// Además así no preocupo de liberar la memoria, todo es automático*
> MiContenedor& Lista()
> {
>    static MiContenedor MC;
>    MC.clear()
>
>    ... MC[Key]=Data;
>    ...
>    return MC;
> }
>
> The End
>
> > Date: Tue, 23 Jun 2009 14:31:23 -0400
> > From: srd4121 en njit.edu
> > To: cconclase en listas.conclase.net
> > Subject: Re: [C con Clase] DUDA CONTENEDOR
> >
> > Hola Pedro,
> >
> > Se me olvidó comentar una tercera opción, que tampoco recomiendo.
> > Consiste en instanciar el objeto local pero estáticamente. Esto es,
> >
> > MiContenedor& Lista()
> > {
> > static MiContenedor MC;
> > ...
> > return MC;
> > }
> >
> > *La desventaja es que 'MC' puede ser sobreescrito en otra invocación y
> > por tanto al usar referencias la información aparentará modificada.*
> >
> >
> > Mi consejo es instanciar otro objeto temporal que es una copia al
> > retornar el objeto local.
> >
> >
> > Hasta pronto,
> >
> > 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
>
> ------------------------------
> Connect to the next generation of MSN Messenger  Get it now!
> <http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline>
>
> _______________________________________________
> 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
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090624/2d51aa4c/attachment.html>


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