A ver por como lo veo, tenes 2 posibilidades como vos mismo mencionaste, una
es mantener una cuenta de todas las referencias o bien no permitiendo hacer
copia del objeto o que el objeto no sea copiable (lease dejar privados los
operadores de = y constructor copia)....

Otro approach que se me ocurre es usar un boost::shared_ptr guardando ahi
los punteros a los nodos, entonces de esa forma compartis el objeto en el
heap a travez de punteros a ese objeto Nodo XML desde tus objetos y los
operadores de copia y de asignacion son seguros ya que se estaria copiando o
haciendo copia de un boost::shared_ptr y por ende el mismo mantiene la
cuenta de referencias sobre el Nodo XML...

Saludos
Pablo

El 20 de agosto de 2008 22:41, Juan Alejandro Knight <
[EMAIL PROTECTED]> escribió:

>  buenas a todos
> tengo un problema con una clase que estoy haciendo para encapsular nodos
> XML dentro de una clase
> estamos usando el source de TinyXml
>
> mas alla de que recomienden usar otras herramientas, a lo que voy es que
> tengo un problema de diseño
> cada objeto deberia encapsular un nodo creado con new (debido a
> implementacion del tiny)
> por lo que el destructor deberia encargarse del delete sino hay memory leak
> si sobrecargo el operator = y el constructor de copia para que cada uno
> tenga un nodo hecho "new", tengo el problema de que puedo modificar copias y
> no se modifica el contenido del nodo que realmente quiero modificar
>
> pense en una posibilidad que no se sobrecargue los operator= y CC y
> manteniendo un contador de referencias, pero ahi el problema es que se
> "rompe" el signature del constructor de copia posta
> seria algo como
> Class(Class &)
> el const no va porque al hacer una copia incrementaria el numero de
> referencias
> esto asi no va
>
> lo unico que se me ocurre es poner como privados el op= y CC y viva la pepa
> fuerzo a usar punteros
>
> que les parece?
> ideas? alguien enchufado en la Matrix?
>
> saludos
> PD: no estoy buscando cambiar de herramienta (tiny), simplemente hacer
> funcionar lo que ya esta implementado
>
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>


-- 
Si yo tengo una manzana y tú tienes una manzana, luego de intercambiarlas
ambos tenemos una manzana. Si yo tengo una idea y tú tienes una idea, luego
de intercambiarlas ambos tenemos dos ideas.

Apoyando a la comunidad Open Source.

Facebook prifile:
http://www.facebook.com/profile.php?id=1244601012
Orkut prifile:
http://www.orkut.com/Profile.aspx?uid=12594853021246287134
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a