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

C++ Discussion :

[Débutant] Aide sur les statiques.


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut [Débutant] Aide sur les statiques.
    Bonjour.

    La faq C++ comporte une flopée de sujet sur les statiques mais j'avoue ne pas avoir bien saisi la chose.

    Je souhaiterais utiliser un statique pour numéroter certains objets en l'incrémentant selon l'appel au constructeur.

    je rencontre néanmoins des problèmes: si je fait une copie, je voudrais que les deux membres soient comptabilisés comme un seul.

    seul certains points sont comptabilisés. je dois pouvoir décrémenter correctement dans le destructeur (mais il y as un problème à cause de la condition précédente).
    chaque objet à de plus un id, privé construit à partir du statique mais si on décrémente celui-ci, comment avoir un id unique ? (il faudrais faire deux statiques mais y'à pas une autre solution ?)

    merci
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Qu'est ce que tu entends par copie : constructeur par recopie ?

    Dans ce cas, tu peux toujours faire quelque chose du genre :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    #include <iostream>
     
    class A
    {
     
        static int _total; //indique le nombre total d'instance qui partage _entier
        bool _shared; //indique si il y a été crée par le constructeur par recopie
     
      public:
     
     
        A()
        {
          _shared = false;
     
          _total++;
        }
     
        A(const A & a)
        {
          _shared = true;
     
        }
     
        ~A()
        {
          if(!_shared)
            _total--;
        }
     
     
        int getTotal()
        {
          return _total;
        }
     
     
    };
     
    int A::_total = 0;
     
    int main()
    {
     
      A  *a = new A;
     
      std::cout<<"Total : "<<a->getTotal()<<std::endl;
     
      A * b = new A;
      std::cout<<"Total : "<<a->getTotal()<<std::endl;
      delete a;
      std::cout<<"Total : "<<b->getTotal()<<std::endl;
     
      A * c = new A(*b);
     
      std::cout<<"Total : "<<c->getTotal()<<std::endl;
     
      delete c;
      std::cout<<"Total : "<<b->getTotal()<<std::endl;
     
      delete b;
     
      return 0;
    }
    Mais ça peut être extremement dangereux, si les classes partagent une même donnée (par exemple un pointeur) :
    Si tu supprimes la classe avant la copie, ça peut partir dans le décor
    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    le problème là, est que si je veut mettre une id, je risque de me retrouver avec plusieurs fois la même.... sans compter que même si je met un deuxième static, je dois pouvoir le décrémenter en cas de recopiage (puisqu'il aura forcément été incrémenté à sa création) ou bien me retrouver avec des "trous d'id" non dûs à des suppressions...

    (je sait, j'ai des exigeances suicidaires )


    merci
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. [Débutant] Aide sur les BD et conseils
    Par femtosa dans le forum Bases de données
    Réponses: 7
    Dernier message: 09/05/2007, 14h03
  2. aide sur les fonctions (débutant)
    Par tregont dans le forum Débuter
    Réponses: 4
    Dernier message: 22/01/2006, 21h03
  3. [Débutant] besoin d'aide sur les web services
    Par Diangelita dans le forum Services Web
    Réponses: 3
    Dernier message: 20/01/2006, 08h41
  4. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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