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 :
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.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
#include "Objet.h"
 
Objet::Objet()
{
    compteur++;
    indice = compteur;
}
 
int Objet::getIndice()
{
    return indice;
}
 
int Objet::compteur = 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
15
16
#ifndef OBJET_H
#define OBJET_H
 
 
class Objet
{
    public:
        Objet();
        int getIndice();
 
    private:
        static int compteur;
        int indice;
};
 
#endif // OBJET_H