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 :

error C2679: binary '=' : no operator found.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut error C2679: binary '=' : no operator found.
    Bonjour a tous,
    Pour un projet universitaire, je dois apporter une contribution sur un programme conçu avec Microsoft Visual Studio.
    Je dois utiliser un objet CVector3D, qui est comme son nom l'indique un vecteur dans l'espace 3D.
    Je voudrais placer ces vecteur dans une "liste" vetor (std::vector<CVector3D>).

    Ci je met ce bout de code ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	std::vector<CVector3D*> liste;
    	CVector3D point=new CVector3D(0,0,0);
    	liste.push_back(point);
    pas de pb tout se passe bien a la compilation, et a l'exécution, mais je ne veux pas travailler en pointeur.

    tandis que ce bout de code-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	std::vector<CVector3D> liste;
    	CVector3D point(0,0,0);
    	liste.push_back(point);
    ne marche pas, et le compilateur me dit :
    error C2679: binaty '=' : no operator found which takes a right-hand operand of type 'const CVector3D' (or there is no acceptable conversion)

    je n'arrive vraiment pas a mettre la main sur mon problème, d'autant plus que si j'utilise std::list<CVector3D> tout fonctionne impec.

    une idée quelqu'un ?

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Bonjour,
    D'après ce que dis le message d'erreur, il semble y avoir un problème avec l'opérateur d'affectation de CVector3D. Pourrais-tu nous montrer le code de cette classe ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut
    hum, je n'ai pas l'impression que j'ai accès a cette classe. elle doit faire partie d'une librairie.
    Puis-je remplacer CVector3D par une classe qui existe de base en C++ ou il n'y aurait pas de problème? Tout ce que je veux, c'est pouvoir accéder a coordonnées en x,y et z de mon vecteur...

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Malheureusement, la STL est trop généraliste pour fournir des classes aussi spécifiques de des vecteur 3D.

    De plus, elle impose au niveau des collections (*) que les objet soient copiables et assignables.

    Si ta classe CVector3D ne l'est pas, je crains que tu n'aie pas d'autre alternative que:
    • choisir une autre bibliothèque qui permette de présenter un vecteur 3D sous une forme copiable et assignable
    • utiliser des pointeurs sur CVector3D, avec la gestion dynamique de la mémoire que cela implique


    Il me semble en effet peu efficace de coder une classe qui fournisse exactement les mêmes services que la classe CVector3D, et, surtout, de recoder au final (car je présumes que ce n'est qu'une classe parmi d'autres)... toute la bibliothèques pour que les différents types et fonctions qu'elle contient puissent s'y adapter

    (*) Le terme liste est, typiquement, utilisé comme "abréviation" du terme "liste (doublement / simplement) chainée" qui est... une manière de regrouper des objets dans une collection.

    lorsque l'on souhaite parler du fait que l'on veut "simplement" pouvoir manipuler plusieurs objets au travers d'une variable unique, on parle de "collection"

    Ces les différentes collections de la STL (stack, vector, list, set, map,...) sont autant de moyen d'arriver à manipuler plusieurs objets au travers d'une variable unique présentant des comportements particuliers, et donc adaptées à des situations particulières:
    • std::stack représente une pile, c'est à dire un système LIFO (Last In First Out)
    • std::vector représente un tableau, c'est à dire un ensemble d'objets contigus en mémoire permettant un acces "aléatoire" aux différents éléments
    • std::list représente une liste d'objets, pas forcément contigus en mémoire et permet un accès séquentiel aux différents objets (en partant du début, il faut parcourir les N-1 premiers éléments avant d'accéder à l'élément N)
    • std::set représente un arbre binaire pour lequel l'objet est la clé permettant son classement au sein de l'arbre
    • std::map représente un tableau associatif agissant sur le principe de l'abre binaire, mais pour lequel la clé est indépendante de l'objet
    • ...
    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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Par défaut
    un tout grand merci pour ta réponse Koala, je pense que je vais donc continuer a travailler en pointeur.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2010, 02h17
  2. LaTeX Error: File 'here.sty' not found
    Par yeahna dans le forum Débuter
    Réponses: 3
    Dernier message: 15/07/2009, 15h39
  3. [VC6 et VC8] Error C2679 operator!= std::string
    Par 3uclide dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/06/2009, 18h54
  4. Réponses: 0
    Dernier message: 05/12/2007, 09h09
  5. [Dev-Pascal] Syntax error : unit expected but program found
    Par [R]Viper dans le forum Autres IDE
    Réponses: 13
    Dernier message: 05/01/2007, 12h12

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