Pb portée de structure

Résolu
xasm Messages postés 13 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 12 novembre 2009 - 8 déc. 2008 à 19:06
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 9 déc. 2008 à 14:30
 


           Bonjour,


  J'écrit une structure dans une fonction mais je n'arrive pas à y accéder
à partir d'une autre fonction auriez-vous une idée?
 P.S. ce code est écrit à partir de borland C++ standard.


     //---------------------------------------------------------------------------
#include <windows.h>
#include
#include <condefs.h>
#include "essaistruct.h"


#pragma package(smart_init)
#pragma resource "*.dfm"


int ligne = 5;
typedef struct Structure Sine;
struct Structure //structure qui ne sert à rien :p
{
    public:
    string texte;
};


TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Sine* structure = NULL; //On initialise le pointeur sur la Structure à NULL
      structure = new Sine[ligne]; //On fait pointer structure sur un tableau de n Structures
        structure[0].texte = "0"; //Changement de celle du string
        structure[1].texte = "1";
        structure[2].texte = "2";
        structure[3].texte = "3";
        structure[4].texte = "4";
//    }


    for(int i=0;i<ligne;i++){ //Boucle-test
MessageBox(NULL,structure[i].texte.c_str(),"fichier relus référence",MB_ICONSTOP);
}
        return ;
}




      Merci de m'avoir lu et qui sait peut-être corrigé.


   Amicalement


    Xasm

3 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 déc. 2008 à 14:30
Pas le public: de

struct Structure //structure qui ne sert à rien :p
{
    public:
    string texte;
};

Ta classe TForm1 doit bien être déclarée quelque part... Faut lui ajouter un membre. C'est de la POO quoi...

int ligne = 5;

Là tu déclare ta variable publique à ton fichier. Si tu veux tu peux mettre l'autre aussi :

Sine* structure = NULL;

Parce que là tu l'as déclarée dans Button1Click. C'est une variable locale à la méthode. Normal que tu ne puisse pas y accéder depuis l'extérieur !
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
8 déc. 2008 à 22:50
Salut,

Heu bin j'ai rien compris là... Mais si tu veux accèder à la même instance de structure dans plusieurs méthodes de ta classe TForm1, il faudrait que tu déclares cet instance comme membre privé (Ou autre..) de TForm1.
0
xasm Messages postés 13 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 12 novembre 2009
9 déc. 2008 à 14:21
        Bonjour,

   Rt15 en fait si j'essai de placer le code :
          
   for(int i=0;i<ligne;i++){ //Boucle-test
MessageBox(NULL,structure[i].texte.c_str(),"fichier relus référence",MB_ICONSTOP);
 
  non plus dans void __fastcall TForm1::Button1Click(TObject *Sender)
{

mais dans par exemple void __fastcall TForm1::Button2Click(TObject *Sender)
{

 alors je ne peux pas y accéder


 


    Donc si je comprend il me suffit de remplacer


public: par


privée:   ????


 


           Merci


 


   Amicalement
0
Rejoignez-nous