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 :

Vector de pointeurs


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut Vector de pointeurs
    Bonjour,

    Je souhaiterais utiliser un vector de pointeurs pour stocker les adresses d'instances de classes...
    Lorsque je fait un push_back je me rend compte que l'adresse du pointeur n'est plus la même dans le vecteur car je pense qu'il doit le recopier
    Ceci me pose problème car dans mon instance je fait une boucle sur ce vecteur et je fait un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (objets[indexObj] != this)
    {
      // Traitement
    }
    Je fait ceci pour ne pas traiter l'objet en cours du vecteur si c'est l'objet dans lequel je me trouve, et comme les pointeurs ont changés de valeurs et bien mon test ne fonctionne pas...

    Est-ce que quelqu'un pourrais m'aiguiller svp ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    Désolé, en fait ca marchait très bien... je ne suis pas réveillé aujourd'hui

  3. #3
    Membre habitué Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Points : 173
    Points
    173
    Par défaut
    Petite explication quant même ^^

    Quand on fait un push_back la classe vector appelle le constructeur par copie. Donc :
    • si le vecteur est de type <TonObjet>, il va copier ton objet via son constructeur par copie.
    • si le vecteur est du type pointeur, il va copier ton pointeur via la constructeur par copie de integer.


    Bonne sieste

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    Salut,

    Oui c'est ce que j'ai cru comprendre en effet.

    D'ailleurs, juste par curiosité, comment fait t-on pour afficher l'adresse d'un pointeur et pas l'adresse vers laquelle le pointeur pointe ?

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par bombseb Voir le message
    D'ailleurs, juste par curiosité, comment fait t-on pour afficher l'adresse d'un pointeur et pas l'adresse vers laquelle le pointeur pointe ?
    Un pointeur n'est que variable dont la valeur est l'adresse d'une autre variable.

    Donc tu peux afficher l'adresse d'un pointeur de la même manière que tu le fais pour toutes les autres variables. Rien de magique
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par bombseb Voir le message
    Salut,

    Oui c'est ce que j'ai cru comprendre en effet.

    D'ailleurs, juste par curiosité, comment fait t-on pour afficher l'adresse d'un pointeur et pas l'adresse vers laquelle le pointeur pointe ?
    Ben, un pointeur n'est jamais qu'une variable comme une autre !!!

    Enfin, c'est une variable comme une autre, à ceci près qu'il contient une adresse mémoire comme valeur. Mais, comme pour n'importe quelle variable, il est possible de savoir l'adresse à laquelle elle se trouve avec l'opérateur "address of"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main(){
        int * ptr= new int[10];
    std::cout<<ptr<<"\n" // affiche l'adresse du premier élément 
                 <<&ptr<<"\n"; // affiche l'adresse de ptr :D
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    Ah oui effectivement c'est tout simple...

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

Discussions similaires

  1. Vector et pointeurs
    Par Ardeciel dans le forum SL & STL
    Réponses: 2
    Dernier message: 25/03/2007, 11h55
  2. Réponses: 13
    Dernier message: 03/10/2005, 18h06
  3. pb avec vectors de pointeurs
    Par e-teo dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/07/2005, 14h11
  4. Réponses: 8
    Dernier message: 26/08/2004, 18h59
  5. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54

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