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 :

access to static variable


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut access to static variable
    Bonjour,

    Comment peut on accéder à une variable statique déclarée dans le fichier .cc et .h et ceci à partir des instances de la classe déclaré dans ces fichiers.
    voilà le code:
    file_A.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class A{
       A();  //constructeur de la classe
       int index;
    };
    file_A.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static int max_index =0;
    A::A(){
       index =max_index++;
    }
    ce que je veux est d'accéder à max_index à partir d'une classe dérivé de A:

    exemple:
    file_derivedA.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     #include "A.h"
    class derivedA{
       derivedA();         //constructeur de la classe
    };
    file_derivedA.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    derivedA::derivedA(){
       A::max_index--;             // c'est ici que ça coince 
    }
    l'erreur est: "max_index is not a member of A".

    j'ai ajouté "int A::max_index;" avant "derivedA::derivedA()" mais l'erreur reportée est que "max_index is not a static member of class A".


    des suggestions car le problème est que je doit autant que possible ne pas modifier les fichiers A.cc et A.h


    Merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    La propriété static est donnée la définition de la classe pas à la définition de la variable membre :
    A.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    {
    public :
    static int max_index;
    int index;
    A();
    };
    A.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int A::max_index = 0;
    A::A():index(++max_index)
    {
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <iostream>
    #include "a.h"
    int main()
    {
       std::cout<<A::max_index<<"\n"; // l'accès à une variable statique ne nécessite pas d'instance sur l'objet
       A a;
       std::cout<<a.index<<"\n"; // l'accès à une variable non statique nécessite une instance qui contient ce membre
       return 0;
    }

Discussions similaires

  1. [ACCESS] Rafraichir une variable
    Par subnox dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/08/2007, 09h09
  2. Variable static => variable de classe?
    Par JMLLB dans le forum Langage
    Réponses: 7
    Dernier message: 20/11/2006, 16h28
  3. [FOP] [ERROR] non-static variable this cannot be referenced from a static context
    Par cash3000 dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/05/2006, 16h46
  4. erreur: non-static variable
    Par semaj_james dans le forum Langage
    Réponses: 3
    Dernier message: 30/01/2006, 15h56
  5. [debutant] non static variable
    Par Battosaiii dans le forum Langage
    Réponses: 1
    Dernier message: 10/12/2005, 14h39

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