Initialisation attribut static

Initialisation attribut static

by Nadia Hadjmbarek -
Number of replies: 2

Bonjour, 

comme on ne peut pas initialiser un attribut static dans la classe dont laquelle est defini, comment faire pour remplir le static vector <Player> par exemple a chaque fois qu'un player est lu? Est-ce possible de définir une fonction a l'extérieur de la classe pour s'en charger  (mais dans le même fichier) et l'appeler dans le constructeur ?

In reply to Nadia Hadjmbarek

Re: Initialisation attribut static

by Saad Himmi -

Salut,

Je t'invite à regarder la partie "attribut statique" de ce cours : https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1898734-utilisez-les-elements-statiques-et-lamitie#/id/r-1898681

En fait, il faut initialiser ta variable statique en dehors de ta classe. Seulement, fais attention à respecter l'encapsulation de ta variable et ne la laisser visible que par ta classe. 

Dans le cadre du projet, il faut penser à rajouter une ligne "vector<Player>  Player::tab;" en dehors de la définition de ta classe Player pour initialiser ton vecteur à un tableau vide.

Ensuite, toutes les manipulations sur ton vecteur (push.back, pop_back etc...) doivent se faire dans ton constructeur ou tes méthodes.


En espérant être assez clair,

Saad Himmi.

In reply to Saad Himmi

Re: Initialisation attribut static (de classe / expliqué en page 24 du BOOC)

by Ronan Boulic -

remarque: ok mais on n'en demandait pas tant. Il y a deux usages du mot-clef static.

1) Le concept d'utilisation de static utilisé dans cette réponse est appelé une variable de classe ; c'est en avance sur le cours puisqu'il est expliqué dans le cours de cette semaine (p24 du BOOC). Vous pouvez vous en servir mais lire d'abord la suite.

2) => Le cours et le projet font référence à la notion plus élémentaire de variable static déclarée en dehors de toute fonction ; une telle variable appartient à l'espace de noms non-nommé présenté dans le slide 13 de ce cours vu en seconde semaine du semestre:

https://moodlearchive.epfl.ch/2018-2019/pluginfile.php/2565891/mod_resource/content/1/S02_sem2_MOOC1_Class_2018_19.pdf

Une variable static est initialisée une seule fois au moment de sa déclaration. Ensuite elle peut être accédée par toutes les fonctions du module et seulement du module où elle est déclarée.

je vais modifier le code d'une série pour montrer un exemple de variable static de l'espace de nom non-nommé. je posterai un message quand ça sera disponible.