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 :

Surchage opérateur d'assignation =


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut Surchage opérateur d'assignation =
    Bonjour,

    J'ai deux classes: class Point3D et class Vector3D. Je souhaiterais pouvoir convertir un objet d'un type vers l'autre (il suffit de recopier 3 valeurs en gros...). J'ai essayé de surcharger l'opérateur = dans les deux classes mais mon compilateur (Visual) me dit qu'il ne connaît pas Point3D dans la classe vecteur (pourtant j'ai bien #include "Point3D" dans ma classe Vecteur3D et #include "Vector3D" dans ma classe Point3D) mais on dirait que cette référence croisée, lui emmêle les pinceaux! Voici mes surcharges:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gPoint3D& operator =(const gVector3D& v);      //Convert a 3D-vector to a 3D-point
    gVector3D& operator =(const gPoint3D& p);         //affectation
    ==> erreur : "missing type specifier"/ donc il ne connaît pas gPoint3D
    Est-ce que cela vous semble correct? Peut-on croiser les assignations?

    Merci d'avance!
    Cordialement,
    Rodrigue

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est normal si Vecteur3D.h inclut Point3D qui inclut Vecteur3D que lors de la déclaration de Point3D, il ne sache rien de Vecteur3D si tu as mis des #ifndef...
    Fais une déclaration anticipée de la structure Vecteur3D et Point3D dans les headers opposés.

  3. #3
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Par "header opposés", tu veux dire que je mette:
    #include "Point3D.h" avant #ifndef dans mon fichier "Vector3D.h" et,
    #include "Vector3D.h" avant #ifndef dans mon fichier "Point3D.h"?
    J'ai une erreur à la compilation: too many include files...
    Ben ouais ça boucle! Point3D appelle, Vector3D qui appelle Point3D etc.

  4. #4
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Je ne dois pas mettre "extern class" qqchose... pour lui dire qu'elle existe?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, j'ai dit déclaration anticipée, donc un truc style :
    dans Vecteur3D.h
    Et tu as bien mis des protections contre les boucles d'include ? Avec les #ifndef ?
    Par ce que vu ce que tu as indiqué, ce n'est pas le cas.

  6. #6
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Oui oui j'en ai...
    en fait c'est :

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

Discussions similaires

  1. Surcharge idéale de l'opérateur d'assignation ?
    Par damien.flament dans le forum Langage
    Réponses: 9
    Dernier message: 28/08/2010, 14h41
  2. Réponses: 18
    Dernier message: 17/07/2010, 15h03
  3. Problème dans un opérateur d'assignation
    Par deubelte dans le forum C++
    Réponses: 5
    Dernier message: 19/03/2010, 12h46
  4. Surchage opérateur & instanciation dynamique
    Par winzzz dans le forum Débuter
    Réponses: 2
    Dernier message: 28/10/2008, 13h24
  5. Surchage opérateurs de flux
    Par Jbx 2.0b dans le forum SL & STL
    Réponses: 10
    Dernier message: 25/03/2008, 09h47

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