Juan Alejandro Knight, el 20 de agosto a las 22:41 me escribiste:
> 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
Más allá de cualquier juicio de valor sobre esta solución, para este tipo
de chanchadas existe mutable:
struct A { mutable int x; };
void f(const A& a) { a.x = 5; }
A a;
f(a);
Compila y anda. Igual si vas a usar un contador de referencia, el contador
en sí debería ser "global", no de instancia, porque si no actualizás el
contador de una instancia pero todas las demás "instancias" que apuntan al
mismo nodo XML no ven el contador "actualizado". Así que ni siquiera
debería ser necesario usar mutable.
> lo unico que se me ocurre es poner como privados el op= y CC y viva la
> pepa
> fuerzo a usar punteros
Es una solución muy común y que me parece ampliamente más elegante que
usar mutable y tener el overhead del conteo de referencias (si no
necesitás semántica de compia). De hecho a este tipo de clases se les
llama non-asignable y non-copiable y son conceptos comunes que define la
STL.
--
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Karma police
arrest this girl,
her Hitler hairdo
is making me feel ill
and we have crashed her party.
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion