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++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mai 2010
    Messages
    1
    D�tails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 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
    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