Probleme avec vector

Probleme avec vector - C++ - Programmation

Marsh Posté le 14-03-2003 à 20:44:27    

alors voilà à la création de mon appli, je crée un nouveau vecteur:
 

Code :
  1. vector<int> vect;


 
Puis plus tard quand on clique sur un bouton, il doit ajouter à ce vecteur avec une valeur.
 

Code :
  1. vect.push_back(int(PointeurStatChoisie->GetNodeValue()));


 
Mais à la compilation, pour la dernière ligne, il me dit que le symbole vect n'est pas défini. Effectivement si je mets la première ligne dans la fonction qui contient la seconde ligne, ça fonctionne...
Mais le problème est que je dois avoir accès au vecteur depuis n'importe quelle fonction...
 
Le problème est que je ne sais pas comment le définir dans le .h...
 
Comment je peux faire?

Reply

Marsh Posté le 14-03-2003 à 20:44:27   

Reply

Marsh Posté le 14-03-2003 à 21:09:29    

Il faudrait tout d'abord nous dire comment est créé vect : local à une fonction, global, membre d'une classe, ... ?
 
S'il est global, tu ajoutes dans le fichier contenant le code utilisant vect une ligne du genre :

Code :
  1. extern vector<int> vect;


 
Dans les autres cas, il faut que le code l'utilisant ait soit un pointeur vers vect, soit une référence.
 
Le mieux est encore que tu nous fournisse quelques informations supplémentaires.


Message édité par gatorette le 14-03-2003 à 21:10:00

---------------
each day I don't die is cheating
Reply

Marsh Posté le 14-03-2003 à 21:22:16    

Bon alors en fait je crée un tableau avec des valeurs tirées d'un XML, elles même correspondant à des positions vidéos en millisecondes d'une vidéo...
 
Quand on clique sur une ligne du tableau, on place la vidéo à l'endroit indiqué par la valeur de la ligne...
 
Le problème est que dans le tableau je réecris le temps en millisecondes en heures-minutes-secondes, donc la valeur affichée ne me permet pas de replacer la vidéo.
 
J'avais donc pensé, en parralèle à l'affichage du tableau, à créer un vecteur, à faire des push_stack pour le remplir avec les valeurs en millisecondes (vu que je ne sais jamais combien de valeurs j'aurai à rentrer), et quand je clique sur le tableau, je sais sur quelle ligne j'ai cliqué, et donc l'index de cette ligne (indexée depuis 0) me sert à retrouver la valeur dans mon vecteur, et se situant au même index...
 
Je code avec C++ Builder 6.
 
Le problème est que je définis mon vecteur quand la fenêtre se crée:
 

Code :
  1. __fastcall TAnalyseStatsForm::TAnalyseStatsForm(TComponent* Owner)
  2.         : TForm(Owner)
  3. {
  4. RemplirEquipes();
  5. RemplirJoueurs();
  6. RemplirStats();
  7. vector<int> vect;
  8. }


 
Ensuite, dans une fonction de la fenêtre, je dois remplir le vecteur:
 

Code :
  1. void __fastcall TAnalyseStatsForm::ChangeStats()
  2. {
  3. ListeActions->Clear();
  4. _di_IXMLNode PointeurContenu = MainForm->XMLStats->DocumentElement;
  5. _di_IXMLNode PointeurEquipe = PointeurContenu->ChildNodes->GetNode(Equipe->ItemIndex);
  6. if (NumJoueur->ItemIndex > 0)
  7. {
  8.         _di_IXMLNode PointeurJoueur = PointeurEquipe->ChildNodes->GetNode(NumJoueur->ItemIndex - 1);
  9.         _di_IXMLNode PointeurStatsInfos = PointeurJoueur->ChildNodes->GetNode(StatChoisie->ItemIndex);
  10.         if (PointeurStatsInfos->ChildNodes->GetCount() > 0)
  11.         {
  12.                 for (int i=0; i < PointeurStatsInfos->ChildNodes->GetCount(); i++)
  13.                 {
  14.                         _di_IXMLNode PointeurStatChoisie = PointeurStatsInfos->ChildNodes->GetNode(i);
  15.                         ConvertTemps(int(PointeurStatChoisie->GetNodeValue()));
  16.                         ListeActions->AddItem(TempsPosition,this);
  17.                         vect.push_back(int(PointeurStatChoisie->GetNodeValue()));
  18.                 }
  19.         }
  20.         else
  21.         {
  22.                 ListeActions->AddItem("Pas d'actions pour cette statistique",this);
  23.         }
  24. }
  25. ......
  26. }


 
le problème se situe à cette ligne:  
 

Code :
  1. vect.push_back(int(PointeurStatChoisie->GetNodeValue()));


 
Il me met:
 
Symbole 'vect' non défini
 
Alors je me demande comment faire pour créer un vecteur utilisable dans toutes les fonctions de ma fenêtre (notamment dans celle qui récupère la valeur du vecteur, afin de replacer la vidéo)
 
J'espère avoir été clair!

Reply

Marsh Posté le 14-03-2003 à 21:25:55    

J'ai lu rapidement ce que tu as écrit, mais ce ne serais pas plus simple de définir ton vect comme membre de ta classe TAnalyseStatsForm ?


---------------
each day I don't die is cheating
Reply

Marsh Posté le 14-03-2003 à 21:45:36    

Merci, ça fonctionne comme ça effectivement...
 
Le problème est que le C++, j'apprends au fur et à mesure de mes erreurs ou de mes problèmes, donc je suis loin d'avoir acquis tous les bons automatismes...
 
Je me doutais qu'il fallait le définir comme membre de la classe TAnalyseStatsForm, mais j'avais essayé de le faire depuis le .H, ce qui me causait aussi des erreurs...
 
Là, ça fonctionne pour l'instant, donc je continue, et je reviens si ça merde plus tard :)  
 
Merci encore!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed