SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: KAYSS en Lunes 3 de Agosto de 2009, 21:40

Título: Acceso a punteros desde Threads
Publicado por: KAYSS en Lunes 3 de Agosto de 2009, 21:40
Hola a tod@s!

Mi problema es que necesito acceder desde el método, que va a ejecutar como un thread y por tanto es estático, a un artributo de la clase que es un puntero a una imagen, lo cual me dice al compilar que no es posible.

Cómo podría acceder a este atributo que es un puntero desde el thread?

Gracias y saludos
Título: Re: Acceso a punteros desde Threads
Publicado por: Eternal Idol en Lunes 3 de Agosto de 2009, 21:58
Los hilos reciben un parametro, cuando creas el hilo podes pasar el puntero al objeto de la clase en cuestion que estes usando.
Título: Re: Acceso a punteros desde Threads
Publicado por: KAYSS en Martes 4 de Agosto de 2009, 08:56
Cita de: "Eternal Idol"
Los hilos reciben un parametro, cuando creas el hilo podes pasar el puntero al objeto de la clase en cuestion que estes usando.

Muchas gracias,

Me has solucionado el problema con uno de los hilos.

Sin embargo, en otro de los thread necesito acceder a varios atributos de la clase que son punteros y de este modo únicamente puedo pasarle uno.

Gracias y saludos
Título: Re: Acceso a punteros desde Threads
Publicado por: Eternal Idol en Martes 4 de Agosto de 2009, 09:33
No, de este modo podes pasar un puntero al objeto, con lo cual podes acceder a todos sus miembros.

Digamos que tenes:

Código: C++
  1. Clase *c; //un puntero a un objeto tu clase, usaste new en algnun momento para crear el objeto
  2.  

Entonces creas el hilo:
Código: C++
  1. CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hilo, (LPVOID)c, 0, 0);
  2.  

Y en el hilo:
Código: C++
  1. DWORD WINAPI Hilo(LPVOID lpParameter)
  2. {
  3.   Clase *c = (Clase*)lpParameter;
  4.   c->loQueSea;
  5.   c->otraCosa();
  6. }
  7.  
Título: Re: Acceso a punteros desde Threads
Publicado por: KAYSS en Martes 4 de Agosto de 2009, 11:55
Cita de: "Eternal Idol"
No, de este modo podes pasar un puntero al objeto, con lo cual podes acceder a todos sus miembros.

Digamos que tenes:

Código: C++
  1. Clase *c; //un puntero a un objeto tu clase, usaste new en algnun momento para crear el objeto
  2.  

Entonces creas el hilo:
Código: C++
  1. CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hilo, (LPVOID)c, 0, 0);
  2.  

Y en el hilo:
Código: C++
  1. DWORD WINAPI Hilo(LPVOID lpParameter)
  2. {
  3.   Clase *c = (Clase*)lpParameter;
  4.   c->loQueSea;
  5.   c->otraCosa();
  6. }
  7.  


Muchas gracias,

Ya me queda todo más claro.

Gracias y saludos
Título: Re: Acceso a punteros desde Threads
Publicado por: Eternal Idol en Martes 4 de Agosto de 2009, 12:01
De nadas  B)