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 :

Delete d'un membre static de classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut Delete d'un membre static de classe
    Bjr

    Je veux utiliser un membre static dans une classe, du genre :

    toto.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Toto
    {
    public:
      static monType* pmonType;
    };
    Je l'initialise ds le .cpp

    toto.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monType* Toto::pmonType = new monType;
    Tout va bien, et il est dispo pour toutes les instances de ma classe Toto.
    Par contre, je ne vois pas comment se fera le delete de ce pointeur pmonType ?

    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    delete n'est pas appelé sur cet objet.

  3. #3
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    En encapsulant ta variable dans un singleton, tu devrais pouvoir gérer sa durée de vie et être garant de son unicité.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Un singleton c'est peut-être aller un peu fort. Mais tu peus surment de débrouiller en jouant avec un atexit bien placé. (en passant par une classe proxy encapsulant ton pointeur et qui surcharge new et delete par exemple).

  5. #5
    Membre actif Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Par défaut
    @ Efcis :

    Voici ce que je te propose :

    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
     
     
    class Toto
    {
        static int *si;
     
    public:
     
      Toto()
      {
          if(si == 0)
            si = new int(20);
        }
      ~Toto()
      {
          if(si != 0)
            delete si;
      }
      int GetValue(){ return *si;}
    };
     
     
    int *Toto::si;
     
    int main()
    {
     
        Toto *t = new Toto();
        cout << t->GetValue() << '\n';
        delete t;
     
     
        system("pause");
     
        return 0;
     
    }

  6. #6
    Membre actif Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Par défaut
    J'écris tellement vite que j'en ai oublié l'instruction suivante :

    à placer après le :
    dans le destructeur !

Discussions similaires

  1. utiliser les méthodes d'un membre static d'une classe
    Par tonio_a_588 dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2011, 21h44
  2. Appel membre static dans une autre classe
    Par cyriltec dans le forum C#
    Réponses: 2
    Dernier message: 12/04/2010, 11h23
  3. Réponses: 3
    Dernier message: 12/01/2006, 21h26
  4. pointeur membre static de classe
    Par Ca$ul dans le forum C++
    Réponses: 3
    Dernier message: 26/08/2004, 13h02
  5. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

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