Problème de Threads

Fermé
SnoopydesBois Messages postés 2 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 29 mars 2014 - Modifié par SnoopydesBois le 24/03/2014 à 10:41
SnoopydesBois Messages postés 2 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 29 mars 2014 - 29 mars 2014 à 13:02
Bonjour à tous,

Je suis en train de coder un jeu.

Pour ce jeu, j'essaie d'utiliser des threads (à l'aide la bibliothèque <pthread.h>) pour faire se déplacer des personnages/monstres.

Puisque j'utilise un thread, je dois passer un void* en paramètre.
Or, pour ma fonction de déplacement j'ai besoin de plusieurs paramètres. Je veux donc passer une structure à mon thread.

Mon problème est que je n'arrive pas à accéder aux champs de ma structure.

Voici le code de ma structure :

typedef struct S_Param_Thread{
T_Monstre monstre; //T_Monstre est un pointeur sur la structure S_Monstre
t_ecran_de_jeu matrice; //t_ecran_de_jeu est un pointeur sur la structure s_ecran_de_jeu
int nbdeplacement;
}* T_Param_Thread;

Voici une partie du code de ma fonction :

void* calculDeplacementMonstre(void* my_Param_Thread)
//my_Param_Thread est censé être une variable de type T_Param_Thread (pointant sur une structure de type S_Param_Thread)
{

if(
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.ligne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.ligne
||
((T_Param_Thread*)my_Param_Thread)->matrice->positionHeros.colonne == ((T_Param_Thread*)my_Param_Thread)->monstre->pos_monstre.colonne){

//On fait quelque chose
}
}

Lorsque je compile, j'obtiens l'erreur suivante :
error: request for member 'matrice' in something not a structure or union

Je viens donc chercher de l'aide car je ne comprends pas comment me débarrasser de cette erreur.

(Désolé pour l'indentation complétement moche mais je n'ai pas réussi à faire mieux :/)

Merci de vos réponses :)

A voir également:

2 réponses

Bonjour,

Merci d'utiliser les balises de code pour le rendre un minimum lisible.
Le type T_Param_Thread est déjà un pointeur sur struct S_Param_Thread. Le code ci dessous devrait fonctionner.
if ((T_Param_Thread)my_Param_Thread)->matrice->positionHeros.ligne == ((T_Param_Thread)my_Param_Thread)->monstre->pos_monstre.ligne ||
((T_Param_Thread)my_Param_Thread)->matrice->positionHeros.colonne == ((T_Param_Thread)my_Param_Thread)->monstre->pos_monstre.colonne) { 
    /* Code */
}
0
SnoopydesBois Messages postés 2 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 29 mars 2014
29 mars 2014 à 13:02
Parfait ça marche :)

Merci de votre réponse
0