Problème de Threads
SnoopydesBois
Messages postés
2
Statut
Membre
-
SnoopydesBois Messages postés 2 Statut Membre -
SnoopydesBois Messages postés 2 Statut Membre -
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 :)
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:
- Problème de Threads
- C'est quoi threads sur instagram - Accueil - Guide réseaux sociaux
- Threads - Guide
- Calcul 8 threads excel - Forum Excel
- Créer un compte threads sans instagram - Accueil - Réseaux sociaux
- Threads apk - Télécharger - Réseaux sociaux
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.
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 */
}