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 :

[tableau objet] impossible à remplir


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut [tableau objet] impossible à remplir
    bonjour,
    j'aimerais faire une fonction qui remplisse un tableau d'objet (mon_objet) dont la taille n'est pas connu avant l'appel de la fonction
    voici ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void main (void) 
    {
         mon_objet *tabl_d_objet;
         int nbElements = remplir_le_tableau(tabl_d_objet);
    }
     
    int remplir_le_tableau(mon_objet *obj)
    {
         // ...
         obj = new mon_objet [10];
     
         return 10;
    }
    et cela ne fonctionne pas : obj est connu dans la fonction remplir_le_tableau mais une fois que l'on retourne dans le main, il est vide.

    donc comment faire pour que le tableau soit connu dans le main et se remplisse dans la fonction??

    Merci beaucoup pour votre aide

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Des pointeurs sur des objets ne seraient ils pas plus simples?

    Sinon le probleme est normal: les objets instanciés dans la fonction sont locals à cette fonction.

    EDIT: Euh chui plus trop sûr que ce soit le probleme ici

  3. #3
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut Re: [tableau objet] impossible à remplir
    Fais un passage de paramètres par référence :

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int remplir_le_tableau(mon_objet *obj)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int remplir_le_tableau(mon_objet &obj)
    et ca devrait fonctionner !

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Donc pour compléter ce qui a été dit, il faut passer ton paramètre par référence si tu veux que ce soit l'original et non une copie qui soit manipulé dans la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int remplir_le_tableau(mon_objet *&obj)
    {
         // ...
         obj = new mon_objet [10];
     
         return 10;
    }
    Mais en C++ pour les tableaux dynamiques on utilise std::vector.
    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

  5. #5
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    vu que l'allocation se fait dans ta fonction, il faut que tu passe un pointeur sur une reference :

    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
     
     
    void main (void) 
    { 
         mon_objet *tabl_d_objet; 
         int nbElements = remplir_le_tableau(tabl_d_objet); 
     
        // Par contre il faut faire le netoyage
        delete[] tabl_d_objet;
    } 
     
    int remplir_le_tableau(mon_objet *& obj) 
    { 
         // ... 
         obj = new mon_objet [10]; 
     
         return 10; 
    }
    pense bien à desallouer la mémoire ^^

    Edit : à ... j'me suis fait devancer

  6. #6
    Membre éclairé Avatar de vasilov
    Inscrit en
    Juillet 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 306
    Par défaut
    merci, cela fonctionne parfaitement

  7. #7
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    il faut que tu passe un pointeur sur une reference
    Plutôt une référence sur un pointeur.

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

Discussions similaires

  1. Créer un tableau et le remplir par colonne
    Par tedparker dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/03/2007, 10h53
  2. Débutant Salut pb de tableau Objet.
    Par JPC++ dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 17/02/2007, 23h27
  3. [POO] Tri tableau objets
    Par Metallic-84s dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2006, 19h53
  4. tableau objet
    Par harris_macken dans le forum C++
    Réponses: 9
    Dernier message: 20/06/2005, 21h04
  5. Réponses: 2
    Dernier message: 25/05/2005, 17h25

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