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 :

problème variable globale


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 60
    Par défaut problème variable globale
    Salut,

    je fais un programme d'IA multithread. j'ai plusieures type d'entités intelligentes (chacune représentée par une classe) et elles communiquent entre elles au moyen d'une variable globale.
    Mon pb c'est que j'arrive pas à faire de variable globale qui fonctionne. Voilà comment j'ai fait pour l'instant :

    static vector<vector<int> > repartition_taches;

    cette déclaration est dans un .h à part que j'inclue pour chaque classe qui en a besoin.
    Le pb c'est que j'ai l'impression qu'ils font des chacun des copies de cette variable car à un instant t je n'ai pas le même état pour cette variable.
    J'ai essayé de faire un pointeur mais sans résultat.

    Si qq un a une idée...

    Log

  2. #2
    Invité
    Invité(e)
    Par défaut
    dans le .h, il faut que tu déclare ta variable avec extern...

  3. #3
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Bonjour à toi et bienvenu sur le forum developpez.com

    Pourquoi ne pas faire une classe "communication" que tu passes en paramètre à chaque objet maintenu dans chaque thread ?

    Tu auras un objet global, car partagé par toutes les entités et cela sera plus "propre", avec un système plus souple, si tu souhaites que 2 groupes de thread ne communiques qu'entre eux...

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 60
    Par défaut
    merci de vos conseils, j'ai justement pensé à la classe communication en attendant vos réponse et je suis en train de la mettre en place

    merci !!!
    Log

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 60
    Par défaut
    bon j'ai quand même un pb....
    je met la variable repartition_taches en attribut static de ma classe communication, mais j'ai un pb dinitialisation

    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
    #include<iostream>
    using namespace std;
    #include<vector>
     
    class communication{
     
    	private:
    		static vector<vector<int> > repartition_taches;
     
    	public:
    		communication();
    		~communication(){};
     
    		void ajouter_element(vector<int> vect)
    		{
    			repartition_taches.push_back(vect);
    		}
     
    		vector<vector<int> > obtenir_copie()
    		{
    			return repartition_taches;
    		}
     
     
    };
    Il me met une erreur quand je compile le main :
    : undefined reference to `communication::repartition_taches'

    je suupose qu'il faut une initialisation de type
    vector<vector<int> > communication::repartition_taches=
    mais je ne sais pas ce qu'il faut mettre pour ce type de variables.

    désolée de vous embêter encore...

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Dans communication.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<vector<int> > communication::repartition_taches;
    Si tu veux dimensionner ton tableau tu peux aussi utiliser le constructeur approprié.

    PS : pense à utiliser les balises CODE

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 60
    Par défaut
    merci beaucoup ça fonctionne
    je sais pas pkoi je voulais plus compliqué

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

Discussions similaires

  1. Problème variable globale
    Par mbouskia dans le forum Images
    Réponses: 0
    Dernier message: 19/05/2010, 14h38
  2. Problème variable globale
    Par nanoute dans le forum VB.NET
    Réponses: 2
    Dernier message: 29/08/2009, 13h03
  3. Problème variable globale contenant un stream !
    Par palmitoto dans le forum Lisp
    Réponses: 4
    Dernier message: 25/04/2008, 05h40
  4. Problème variables globales
    Par jcatala dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 20/03/2008, 20h22
  5. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41

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