Problème de Threads
SnoopydesBois
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
SnoopydesBois Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
SnoopydesBois Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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
- Threads instagram c'est quoi - Accueil - Guide réseaux sociaux
- Threads - Guide
- Compte Threads : comment s'inscrire sur le nouveau réseau social - Accueil - Réseaux sociaux
- Calcul 8 threads excel - Forum Excel
- 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 */ }