El dom, 23 abr 2000, Santiago Romero escribi�:

> > Pero es que tiene punteros y punteros a punteros, y el sizeof() no puede
saber > > el tamano de un vector (punteros de punteros) din�mico. Eso funciona,
pero es > > muy probable que de un core en un momento dado, ya que no reservas
toda la > > memoria que necesitas.
> 
>  creo que si que funcionaria: con memcpy copias EL PUNTERO, la direccion,
>  tu interes NO es copiar EL CONTENIDO: al copiar el puntero puedes acceder
>  al contenido. SI coges un puntero (o puntero a puntero) y lo metes en
>  otro sitio, eso te sigue permitiendo acceder a la posicion de memoria
>  apuntada. No se si me explico: tu al copiar la estructura vas a dejar en
>  el destino los mismos valores que tienen los campos origen, entre ellos
>  el valor del puntero que apunta a un array de punteros. Con ese puntero
>  DESDE EL DESTINO sigues pudiendo acceder al array de punteros, �no? :)

He aqu� la cuestion, my dear friend: yo quiero duplicar toda esa informaci�n,
ya que sino, al modificar una cosa apuntada por un puntero, se modifica tambi�n
en el otro lado. Bueno la verdad es que es la misma informaci�n al apuntar los
dos punteros al mismo sitio. Vaya galimat�as!!. 

Todo este embrollo viene a colaci�n de que la funci�n gethostbyname() devuelve
un puntero est�tico a una estructura del tipo hostent. Y este es el problema,
que es un puntero est�tico y siempre apunta al mismo sitio. Si haces un
gethostbyname() de dos nombres de hosts seguidos, la segunda llamada a la
funci�n machaca lo generado por la primera. Para descubrir que esto pasaba
porque as� est� hecho y no por un puntero perdido mio, pues me he pasado un
ratito muy agradable, depurando en busca de un error inexistente :-)

Es que estoy haciendo una estructura de clases en C++ parecida a la de Java.
Obviamente hay una parte muy peque�a implementada, pero est� chulo. He hecho
tambi�n una clase Socket para las comunicaciones y funciona correctamente.
Despu�s tocar� una clase POP3 para trabajar con servidores POP3 y otra SMTP
para los servidores SMTP. Creo que est� quedando bien y muy simple de utilizar.
Programa mucho en Java y la verdad es que es muy c�modo, pero muy lento. Y una
buena jerarqu�a de clases hecha en C++ har�a ganar mucho a este lenguaje. Lo de
los templates me parece una aberraci�n en un lenguaje orientado a objetos.
Cuando tengo algo m�s, igual pido colaboraci�n a la gente, porque para uno solo
creo que es una labor tit�nica. 

Con todas esas clases, desarrollar aplicaciones ser�a mucho m�s sencillo y
r�pido. Con los lenguajes orientados a objeto se consigue un nivel muy bueno de
modularidad y un c�digo muy limpo, claro y reutilizable. No me gusta hacer
proyectos grandes en C porque luego te vuelves loco para encontrar los fallos o
para ampliar funcionalidades. En mi opini�n se programa m�s r�pido y f�cil en
un lenguaje orientado a objetos, si tiene buenas clases. 

Si se hiciera algo como lo que yo quiero para C++ y se extendiera, crecer�an
los programas para Linux, y su calidad.

>  Vamos, a lo mejor me estoy rayando, pero yo creo que es asi :?

No te est�s colando, es correcto lo que dices, pero con la salvedad de que yo
SI quiero DUPLICAR esa informaci�n.

>  Imagina el ejemplo
> 
>  struct {
>             int *puntero;
>            } a, b;
> 
> 
>  si a.puntero apunta a 1234; al copiar en b la estructura a,
>  b.puntero contendr� el mismo valor y apuntar� al mismo lugar.
>  Si en lugar de ser un solo puntero es **, como el ** apunta
>  a vector[0], sigue siendo el mismo tama�o.

Claro, pero si modifico "a.puntero", tambi�n afecta a "b.puntero", y en mi caso
esto no es deseable.

-- 
-----------------------------------------------------------------------------

 * Multitarea: posibilidad de que dos bugs ocurran simultaneamente.

-------------
                      Registered Linux user number 134.596

 E-mail: [EMAIL PROTECTED]                     Powered by Debian 2.1 slink
-----------------------------------------------------------------------------

Responder a