nouvelles valeurs structures

Salut , si j' ai une structure :

struct t_commandeWeb {
  bool active;
  t_volet& volet; // la référence du volet à commander
  t_commandeVolet actionDemandee;
};
t_commandeWeb commandeWeb = {false, lesVolets[0], ARRETER};

au lieu de faire

commandeWeb.active = true;

etc ..

comment changer toutes les valeurs d' un coup en une seule ligne svp ?

Bonjour,

Dans ta structure tu définis une méthode pour affecter tous les attributs

struct t_commandeWeb {
  bool active;
  t_volet &volet; // la référence du volet à commander
  t_commandeVolet actionDemandee;

  void affecte(bool a, t_volet v, t_commandeVolet c)
  {
    active=a;
    volet=v;
    actionDemandee=c;
  }
};

Ensuite tu l'appelles avec les nouvelles valeurs

  commandeWeb.affecte(true, lesVolets[0], MARCHE);

ok , merci pour cette methode :D

cependant pour le 2eme attribut , il s ' agit de :

t_volet& volet; // la référence du volet à commander

il faut donc mettre ?

struct t_commandeWeb {
  bool active;
  t_volet& volet; // la référence du volet à commander
  t_commandeVolet actionDemandee;

  void affecte(bool a, t_volet& v, t_commandeVolet c)
  {
    active=a;
    volet=&v;
    actionDemandee=c;
  }
};

j ' avoue je suis completment paumé avec les references ( et les pointeurs ) :grin:

Effectivement c'est mieux de passer le paramètre par référence

  void affecte(bool a, t_volet &v, t_commandeVolet c)
  {
    active=a;
    volet=v;
    actionDemandee=c;
  }

Merci @Kamill , ca marche impec !

karma + 1 :wink:

vous venez de créer une méthode (on pourrait aussi rajouter un constructeur) - vous allez à grand pas vers la programmation objet :)

iznobe: j ' avoue je suis completment paumé avec les references ( et les pointeurs )

Une référence, c'est la même chose qu'un pointeur. Enfin quand on regarde comment le compilateur les traduit. Quand tu passes une variable par référence à une fonction, le compilateur passe en fait l'adresse de variable, c-à-d son pointeur.

Alors, pourquoi ? Parce que le problème avec les pointeurs, c'est qu'on peut oublier de les initialiser avant de les utiliser. Et le programme explose.

Pas les références. On ne peut pas créer une référence sans l'initialiser, sans dire à quoi elle fait référence. Si on fait ça, le compilateur couine.

La différence entre pointeurs et références est donc essentiellement du niveau flicage. En choisissant d'utiliser des références, tu te protèges contre tes propres oublis.

J-M-L: vous venez de créer une méthode (on pourrait aussi rajouter un constructeur) - vous allez à grand pas vers la programmation objet :)

hum , je ne sais deja pas vraiment ce qu ' est une methode , ni une classe , ni un constructeur ...

les cours de lycée ( qui n ' ont pas durer tres longtemps dans mon cas ) sont pluto bien loin :D

j ' apprends la programmation en diffrents langage totalement en autodidacte , principalement sur le net et pour le C++ je m ' y suis mis il y a moins d' un an .

j ' ai vite lu l ' excellent cours de openclassroom sur le sujet qui est un peu long , mais tres bien expliqué , evidemment je n ' ai pas tout retenu , mais je trouve ca plutot passionnant , cependant pour un novice ca reste tres chronofage ... et entre la reno maison , le boulot , les obligations familiales , le jardin et les petits plaisirs de la vie , il ne reste plus quere de temps .

un constructeur ca sert a quoi ?

biggil:
Une référence, c’est la même chose qu’un pointeur. Enfin quand on regarde comment le compilateur les traduit.
Quand tu passes une variable par référence à une fonction, le compilateur passe en fait l’adresse de variable, c-à-d son pointeur.

Alors, pourquoi ? Parce que le problème avec les pointeurs, c’est qu’on peut oublier de les initialiser avant de les utiliser. Et le programme explose.

Pas les références. On ne peut pas créer une référence sans l’initialiser, sans dire à quoi elle fait référence. Si on fait ça, le compilateur couine.

La différence entre pointeurs et références est donc essentiellement du niveau flicage. En choisissant d’utiliser des références, tu te protèges contre tes propres oublis.

Merci pour cette explication claire , apres 15 jours de manip sur les pointeurs et reference en grande partie grace @J-M-L , je pense avoir maintenant compris comment manipuler les classes , les pointeurs et les references , je m ’ en souviendrais !

Merci encore pour cet eclaircissement qui me permet de mieux cerner ce qu ’ est un pointeur et une reference objet ca m’ a permis de bien comprendre le systeme de transmission des adresses memoires dans le langage C++ .