#0 

30-03-2017 09:32:49

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Bonjour,

Je rencontre quelques complications pour remplir une structure via une fonction.
Je procède de la manière suivante :

Déclaration de la structure : struct caisse_t  { ...Mesh* mesh;
                                                                  ...Node* node};

Déclaration de la structure : struct Item_t { caisse_t  caisse[NUMBER] };

Je crée une variable : Item_t  level_items;

Dans les init du main je passe la variable level_items à ma fonction :
void create_item(Item_t  item)
{
  item.caisse[0].mesh = Chargement du mesh
  item.caisse[0].node = Chargement du node
}

Ensuite je regarde les valeur inscrites dans  item.caisse[0] et là j'ai tout à 0.

Si dans la fonction je travail directement avec "level_items" (déclaré en global) plutôt que le paramètre "item" çà fonctionne.

Dans tous les cas le mesh et le node sont chargés.

Je ne comprends pas pourquoi je ne peux pas remplir ma structure en passant par les paramètres de la fonction.

Hors ligne


#1 

30-03-2017 23:42:07

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 902
Corrections: 2
Site web

c'est normal, tu ne passe pas le paramètre par référence ou par pointeur, donc en fait la structure est copier l'or de l'apelle dans la stack, c'est donc un nouvel objet qui n'a aucune relation wink

il suffi donc de mettre l'opérateur "&":

Code c++ :

void create_item(Item_t  &item)
{
  item.caisse[0].mesh = Chargement du mesh
  item.caisse[0].node = Chargement du node
}

Item_t blabla;
create_item(blabla);



sinon tu utilise des pointeurs

Code c++ :

void create_item(Item_t  *item)
{
  item->caisse[0].mesh = Chargement du mesh
  item->caisse[0].node = Chargement du node
}

Item_t blabla;
create_item(&blabla);

Hors ligne


#2 

31-03-2017 09:16:18

jonath313
Abonné
Date d'inscription: 28-12-2009
Messages: 240

Ha super ! J'ai souvent ce problème, maintenant je comprends d'où çà vient.
Je corrigerai çà ce soir.

Encore merci de t'on aide.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
872 membres
1423 sujets
11109 messages
Dernier membre inscrit: Glider
8 invités en ligne
Aucun membre connecté
RSS Feed

[ Générée en 0.015 sec., 13 requêtes exécutées ]