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 :

Passage de tableau de pointeurs vers objets


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par d�faut Passage de tableau de pointeurs vers objets
    Bonjour,

    J'ai une fonction qui prend comme argument un tableau de pointeurs vers des objets de type coord. Dans cette fonction, je dois copier ce tableau dans un autre, qui appartient � la classe.

    J'ai essay� comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    coord* coins[4];   // variable de classe, déclarée dans l'en-tête
    void rectangle::setCoord(coord*c[]){
          coins = c;
     
    }
    Mais j'ai une erreur de compilation, du genre "ne peut convertir coord** en coord*[4]".

    J'ai donc fait ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    coord* coins[4];   // variable de classe, déclarée dans l'en-tête
    void rectangle::setCoord(coord*c[]){
          for (int i = 0; i<4; i++){
              coins[i] = c[i];
          }
    }
    Mais je trouve cela dommage de devoir recopier tout le tableau �l�ment par �l�ment. En fait, j'aimerais simplement passer un pointeur vers ce tableau, et comme j'ai lu qu'un tableau �tait en fait un pointeur, c'est ce que je croyais faire... Bref, je ne situe pas bien le probl�me.

    Merci d'avance pour vos �claircissements! Et bon week-end.

  2. #2
    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
    Mais je trouve cela dommage de devoir recopier tout le tableau �l�ment par �l�ment
    Dans la mesure o� tu ne veux pas que pointer sur les �l�ments pass�s en param�tre (qui sait ce que devient le tableau apr�s l'appel ?), c'est bien une copie que tu dois effectuer.

    comme j'ai lu qu'un tableau �tait en fait un pointeur
    Non. Ce qui est vrai, c'est qu'un tableau est convertible implicitement en un pointeur vers son premier �l�ment.

    D'autre part tu devrais vraiment �viter tous ces pointeurs inutiles. Une coordonn�es c'est 2 ou 3 valeurs, �a se manipule tr�s bien par valeur.

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ce qu'on sait sur un tableau C, c'est que :
    1. Un tableau Cne peut �tre pass� directement par valeur,
    2. Un tableau Cest implicitement convertible en un pointeur vers son premier �l�ment.

    Donc en fait, si tu as une fonction qui prend "un tableau" en param�tre, elle prend en fait l'adresse de son premier �l�ment.

    Si ton tableau a une taille fixe, tu peux utiliser un pointeur sur tableau, qui a une syntaxe pas toujours facile � maitriser.

    Mais je te conseille plut�t d'utiliser un std::vector, ainsi tu pourras sans probl�me utiliser des pointeurs sur std::vector, et �a marchera toujours, que ce soit sur taille fixe ou variable.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par d�faut
    Citation Envoy� par Laurent Gomila
    D'autre part tu devrais vraiment �viter tous ces pointeurs inutiles. Une coordonn�es c'est 2 ou 3 valeurs, �a se manipule tr�s bien par valeur.
    Quels sont les pointeurs inutiles?
    Une fontion ne pouvant retourner qu'une variable, il faut que celle-ci contienne 2 coordonn�es, d'o� mon objet "coord".

    Tks

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Et en C++, un tel objet peut �tre retourn� par valeur, c'est m�me courant.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Ce que je voulais dire c'est que tes objets coord peuvent �tre manipul�s par valeur :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    coord coins[4];   // variable de classe, déclarée dans l'en-tête
    void rectangle::setCoord(coord c[]){
          for (int i = 0; i<4; i++){
              coins[i] = c[i];
          }
    }
    Dans la classe coord tu stockes deux int, pas deux int*. Fais pareil pour ta classe rectangle

Discussions similaires

  1. Tableau de pointeurs vers des objets
    Par rdtech dans le forum D�buter
    R�ponses: 2
    Dernier message: 17/02/2013, 19h30
  2. R�ponses: 2
    Dernier message: 18/07/2010, 11h43
  3. R�ponses: 4
    Dernier message: 04/02/2007, 00h06
  4. R�ponses: 2
    Dernier message: 12/10/2006, 20h28
  5. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    R�ponses: 11
    Dernier message: 13/12/2005, 19h45

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