Bonjour,
j'ai un ptit souci avec une struct passée en pointeur en argument d'une méthode
et en fait, elle n'est pas mise à jour au retour,
je sais pas trop comment ça se fait...
donc si vous pourriez me donner un ptit coup de pouce...
Alors déjà, attention,
ça peut paraître un peu barbare...
mais j'utilise des types définis dans une librairie C...
Donc, j'ai 2 structures :J'ai une méthode qui me sert à remplir une structure 'Unite' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct Message{ unsigned char nature; char nomUtilisateur[MAX_SIZE]; unsigned short periode; unsigned char data;}; struct Unite{ unsigned short longueur; Message mess;};Et donc, quand j'appelle cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 MaMethode(unsigned short *lgMess, Message *mess) { unsigned short lgData; unsigned char *donnees; //...calcul de la longueur... *lgMess = sizeof(Message) - 1 + lgData; // allocation de la structure du message mess = (Message*) malloc(*lgMess); (void) memset(mess, 0, *lgMess); // affectation des champs de la structure mess->nature = ... StringCbCat(mess->nomUtilisateur, MAX_SIZE, "nomUtilisateur"); donnees = new unsigned char[lgData]; //... remplissage du tableau... //copie dans le message memcpy(&mess->data, donnes, lgData); delete[] donnees; }eh ben, le champ 'longueur' est bien à jour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Unite monUnite; MaMethode(&monUnite.longueur, &monUnite.mess);
mais aucun champ de la struct 'mess'
Pourtant, quand je rentre en debug,
ça paraît tout bien...
Alors alors??
z'avez des pistes?...
Partager