IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Attribution d'un indice unique par classe dans une boucle.


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Par défaut Attribution d'un indice unique par classe dans une boucle.
    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

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Pourquoi tu crées tes objets dans la boucle si tu veux pas qu'ils soient construits à chaque itération ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Citation Envoyé par Grosbulle Voir le message
    Est ce qu'il y a un moyen de donner un indice unique à chaque instance de classe ?
    Oui, c'est d'ailleurs ce que tu as fait.
    Citation Envoyé par Grosbulle Voir le message
    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.
    A chaque tour de boucle tu crées 3 objets, ce sont donc toujours 3 nouveaux objets. Le fait que tu l'appelles obj1 à chaque fois n'y change rien. Tous tes objets créés sont différents. Si tu ne veux pas un nouvel objet, tu le crées avant la boucle pas dedans!
    Citation Envoyé par Grosbulle Voir le message
    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.
    Le problème est: que cherches tu à faire et pourquoi? Ce que tu veux n'a pas beaucoup de sens, peut-être qu'en présentant ton objectif initial, on pourrait t'aider.

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Par défaut
    Excusez moi je cherchais midi quatorze heures, je débute donc tout n'est pas évident pour moi.
    En fait je voudrais faire un programme qui possède plusieurs objets (des boutons de choix) qui interagissent (changement de couleur) sur d'autres objets (1 ou plusieurs rectangles de couleur) cela uniquement en créant des instances de classe.
    Je pense faire des tableaux de classe mais pour ce qui est de l'interaction entre les deux types (Boutons et rectangles) pour l'instant je ne vois pas trop.
    Ma question initiale c'était pour me servir éventuellement des indices de chaque objets.

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par Grosbulle Voir le message
    l'instant je ne vois pas trop
    Tu peux commencer avec le patron de conception observateur ("observer" en anglais)
    Comme cela si tu ne les connais pas, tu apprendras les patrons de conception. Et comme ce sont des "solutions à adapter en fonction de ton problème", cela a le mérite de tester 1 truc éprouvé

    La page wikipedia en francais et en anglais + complète

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] creer plusieurs instances d'une classe dans une boucle
    Par supersonicblonde dans le forum Langage
    Réponses: 6
    Dernier message: 12/04/2011, 09h06
  2. Division par 0 dans une boucle
    Par ZeFMG dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/02/2009, 15h36
  3. Réponses: 8
    Dernier message: 05/12/2008, 11h43
  4. prendre par id dans une boucle
    Par kaking dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2008, 10h19
  5. indice de la variable dans une boucle
    Par christopherocchia dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/05/2008, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo