[C con Clase] DUDA CONTENEDOR

Pedro Rodríguez González sr.whiteskull en hotmail.com
Mie Jun 24 16:41:25 CEST 2009


Bueeeeeeeeeeeeeeeeeeeeno, vaaaaaaaaaaaaaale., veeeeenga, me quedo con la segunda, sacrificaremos la comodidad por la "funcionalidad", por si aparece en un futuro, C+++  gracias David por las clases y un saludete, chau...

Date: Wed, 24 Jun 2009 09:43:03 -0300
From: ddfire en gmail.com
To: cconclase en listas.conclase.net
Subject: Re: [C con Clase] DUDA CONTENEDOR

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! 


_______________________________________________

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. 


_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090624/1febfc63/attachment.html>


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