Bonjour.
Est il possible de n'incrémenter qu'une seule fois un attribut dans le constructeur d'une classe quand une instance de cette classe est dans une boucle.
Je voudrais attribuer un indice à chaque objet que je crée dans la boucle du main.cpp, mais comme l'instance est dans la boucle le constructeur se répète.
Est ce qu'il y a un moyen de donner un indice unique à chaque instance de classe ?
Exemple :
Main.cpp :
Objet.cpp :
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
25
26
27
28
29
30
31
32
33
34 #include <iostream> #include <SFML/Graphics.hpp> #include "Objet.h" using namespace std; int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML"); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); Objet obj1; Objet obj2; Objet obj3; cout << obj1.getIndice() << " " << obj2.getIndice() << " " << obj3.getIndice() << endl; window.display(); } return 0; }
Objet.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Objet.h" Objet::Objet() { compteur++; indice = compteur; } int Objet::getIndice() { return indice; } int Objet::compteur = 0;
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 #ifndef OBJET_H #define OBJET_H class Objet { public: Objet(); int getIndice(); private: static int compteur; int indice; }; #endif // OBJET_H
Partager