Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/05/2013, 00:50
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Pthread tipo c -> c++

No no, no puedes poner un this en una definición. La estructura sería la siguiente:

Código C:
Ver original
  1. typedef struct {
  2. int id; //identificador del thread
  3. int pos;
  4. char* cadena;
  5. struct sockaddr_in conectado;
  6.  
  7. mioFrame* Clase; // Defino un puntero a mioFrame;
  8.  
  9. } mi_tipo;
  10. mi_tipo mensaje;
  11.  
  12. mensaje.id = IdThread; // Rellenamos la estructura
  13. //...
  14. Clase = this; // Solo puedes usar el puntero this dentro de la clase

Una vez en el thread, puedes actuar como si de una estructura se tratase:

Código C:
Ver original
  1. void* Hilo(void* parametro)
  2. {
  3.   //...
  4.   parametro->Clase->Numero // accediendo a la variable "Numero" de la clase (nota, la variable debe ser publica).
  5. }

Una buena práctica es, si no necesitas modificar la variable, declarala como privada y crear un método get():

Código C++:
Ver original
  1. class miFrame
  2. {
  3. private:
  4.   int MiVariable;
  5.  
  6. public:
  7.    int getMiVariable() { return MiVariable;}
  8. };

Es una manera elegante de hacer un acceso de solo lectura:

Código C:
Ver original
  1. void* Hilo(void* parametro)
  2. {
  3.   //...
  4.   parametro->Clase->getNumero(); // accediendo a la variable "Numero" de la clase (nota, la variable debe ser publica).
  5. }

Es una de las mayores ventajas de C++: El encapsulamiento, te impide que cometas errores.