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 :

impossible de convertir le paramètre de 'Point *'en 'const Point &'


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut impossible de convertir le paramètre de 'Point *'en 'const Point &'
    Bonjour,
    j'ai fait une classe point et je veux faire un vecteur qui contient des points.
    voila le code que j'ai fait
    cette partie concerna la classe point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Point
     {
     private :
     double x,y,z; 
     public : 
     
      //constructeur de Point_cs
     
      Point(double a,double b,double c);
    et le main contient le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "Point.h"
    #include "ReadCsv.h"
    void main(void)
    {
     
    	Point * p1,;
    	p1=new Point(1,2,3);
    	vector<Point> vec;
    	vec.push_back( p1);
    }
    le message d'erreur est le suivant
    error C2664: 'std::vector<_Ty>::push_back'*: impossible de convertir le paramètre 1 de 'Point *' en 'const Point &'
    1> with
    cet erreur concerne la dernière ligne dans le main.
    Merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut
    Tu as un vecteur de Point et tu essaies d'y insérer un pointeur de point. Ce sont deux types différents. Tu n'as pas besoin d'allocation dynamique (le new en C++ n'est pas tout à fait équivalent au new java) pour ajouter des points à ton vecteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "Point.h"
    #include "ReadCsv.h"
    void main(void)
    {
     
    Point p1(1,2,3);
    vector<Point> vec;
    vec.push_back( p1);
    }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    le vecteur de point contient plusieurs point.
    Je veux avoir un tableau qui contient plusieurs points(chaque point a 3 coordonnées comme je l'ai défini dans ma classe point).
    puis je veux afficher les coordonnées de tous les points à partir de ce vecteur
    mais j'ai pas arrivé à ajouter aucun point dans ce vecteur.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Le conteneur std::vector permet de contenir plusieurs objets de type Point sans que tu es à te soucier de gérer l'allocation ou la libération. Il est fait pour s'en occuper pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include "Point.h"
    #include "ReadCsv.h"
    void main(void)
    {
    vector<Point> vec;
    vec.push_back( Point (0,0,0));
    vec.push_back( Point (1,1,1));
    vec.push_back( Point (2,2,2));
    vec.push_back( Point (3,3,3));
    // vec.size()==4 !
    }
    Tu as plusieurs moyen d'accéder à tes points :
    (on suppose qu'il existe une fonction AfficheMoi dans Point)
    -> avec les iterateurs : vec.begin(), vec.end() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(vector<Point>::const_iterator it = vec.begin();it!=vec.end();++it)
    {
       it->AfficheMoi();
    }
    -> Avec l'opérateur [] à condition de bien respecter les indices :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(vector<Point>::size_type i = 0;i<vec.size();++i)
    {
       vec[i].AfficheMoi();
    }
    -> Avec at qui fonctionne sur le principe comme [] mais vérifie que l'index est valide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(vector<Point>::size_type i = 0;i<vec.size();++i)
    {
       vec.at(i).AfficheMoi();
    }
    Tu disposes aussi de toute la batterie d'algorithmes définis dans la STL (for_each, transform, copy, find, sort, etc...). Cf Les algorithmes de la STL par r0d

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Je vous remercie beaucoup 3DArchi.
    ça marche.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/05/2011, 10h57
  2. Réponses: 20
    Dernier message: 08/12/2009, 20h42
  3. Réponses: 2
    Dernier message: 29/12/2008, 18h49
  4. Réponses: 1
    Dernier message: 09/07/2008, 15h54
  5. [XPATH] Impossible de convertir #BOOLEAN en un NodeList
    Par claudyyyyy dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 08/02/2006, 16h00

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