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 :

definition de code au fichier.cpp


Sujet :

C++

  1. #1
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut definition de code au fichier.cpp
    jai d�finit ce code dans le fichier.cpp sans mettre la d�claration au fichier.h
    code;:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    ostream& operator<<(ostream& out, const Jeu& j) {
      for (unsigned int i(0); i < j.size(); ++i)
        out << "  + " << *(j[i]);// ligne d'erreur
      return out;
    }
    voila le msg d'erreur:
    binary '<<' : no operator defined which takes a right-hand operand of type 'class Carte' (or there is no acceptable conversion)

    Aidez moi SVP � urgent

  2. #2
    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 : 33
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Tu as d�fini dans Jeu operator [] comme renvoyant un objet de type Carte, objet que tu tentes d'afficher par un flux alors que tu n'as pas d�fini d'op�rateur << prenant un objet de type Carte.
    That's all !

    PS1/ Le message d'erreur est ici tr�s clair, avec le temps il serait bien d'apprendre � les lire.
    PS2/ Urgent ? On est pas l� pour te servir, ton message n'est pas plus urgent qu'un autre.
    "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)

  3. #3
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut
    Oui jai compris ce que tu veux dire le pb que jai � que je suis d�butante en C++ et jessaye de me familiariser avec les fichier header et ficher.cpp je cherche des codes en Net pr s�parer le code de sa d�finition
    Pour ce code je ne sais po pq me donne cette erreur parce que ca fonctionne tres bien lorsque tt le code et r�unit dans le mm fichier.cpp
    pouvez-tvous me clarifier le pb SVP.

  4. #4
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut
    Personne n'a aucune idee

  5. #5
    gl
    gl est d�connect�
    R�dacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par d�faut
    Citation Envoy� par info_ Voir le message
    Personne n'a aucune idee
    Si. Soit tu as oubli� de cr�er certaines fonctions, soit tout n'est pas visible l� o� il le devrait, soit tu ne compiles/linkes pas tout correctement.

    Dans tout les cas, sans avoir le code, il va �tre difficile de r�pondre.

  6. #6
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut
    voila le fichier.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    //Jeu.h
    class Jeu : public vector<Carte*> {
    public:
    	Jeu(){ cout << "On change de main" << endl; }
    	virtual ~Jeu(){}
      void jette();
    };
    et le fichier.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //Jeu_cpp.cpp
    ostream& operator<<(ostream& out, const Jeu& j) {
    	// surcharge d'opprrateur <<
      for (unsigned int i(0); i < j.size(); ++i)
        out << "  + " << *(j[i]);
      return out;
    }
     
    void Jeu::jette() {
    	// declaration de la fonction jette
      cout << "Je jette ma main." << endl;
      while (!empty()) {
        delete (*this)[size()-1];// vider l'objet this pour la taille size - 1
        pop_back();//supprime le dernier élément du vecteur
      }
    }
    quand on compile le code on recoit une erreur a la ligne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    out << "  + " << *(j[i]);
    en affichant :
    '<<' : no operator defined which takes a right-hand operand of type 'class Carte' (or there is no acceptable conversion)
    Merci

  7. #7
    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 : 33
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Tu as d�fini dans Jeu operator [] comme renvoyant un objet de type Carte, objet que tu tentes d'afficher par un flux alors que tu n'as pas d�fini d'op�rateur << prenant un objet de type Carte.
    Ce qu'il nous faut, c'est le code de Carte.

    Sinon, NE JAMAIS HERITER PUBLIQUEMENT DES CONTENEURS DE LA STL.
    Ils n'ont pas destructeurs virtuels, ce qui peut causer des bugs si on passe un objet de la classe d�riv�e l� o� on attend le conteneur de base.
    "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)

  8. #8
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //Carte.h
    class Carte{
    protected:
      unsigned int cout;
    public:
      Carte(unsigned int cout = 0) : cout(cout) {
    	 //Constructeur
        // cout << "  une carte de cout " << cout << " : ";
      }
      virtual ~Carte(){
      //Destructeur
      }
      virtual void afficher(ostream& out) const {
        out << "de coût " << cout; }
    };
    Carte.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    ostream& operator<<(ostream& out, const Carte& c) {
      c.afficher(out);
      return out;
    }
    quand je groupe les deux codes dans le fichier Carte.h je ne recois plus le msg d'erreur je recois un 2eme au niveau de main
    pour
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    int main()
    {
      Jeu mamain;
     
      mamain.push_back(new Terrain(Couleur::BLEU));
      mamain.push_back(new Creature(6, "Golem", 4, 6));
      mamain.push_back(new Sortilege(1, "Croissance Gigantesque",
               "La créature ciblée gagne +3/+3 jusqu'à la fin du tour"));
      mamain.push_back(new CreatureTerrain(2, "Ondine", 1, 1, Couleur::BLEU));
     
      cout << "La, j ai en stock :" << endl;
      cout << mamain;
     
      mamain.jette(); //la ligne d'erreur
    // msg d'erruer: '<<' : no operator defined which takes a right-hand operand //of type 'class Jeu' (or there is no acceptable conversion)
     
      return 0;
    }

  9. #9
    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 : 33
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Ton compilateur ne va pas magiquement conna�tre l'operateur << sur Carte, il se plaint donc. Pour �viter cela il faut ajouter le prototype de ton operateur � la fin de Carte.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    //carte.h
    std::ostream& operator<<(std::ostream& out,const Carte& c) ;
    "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)

  10. #10
    Membre habitu�
    Inscrit en
    Avril 2009
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 11
    Par d�faut
    Oui Merci bien
    � vrai le pb est r�solu merci bien
    � tres gentil de votre part

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 17
    Dernier message: 06/05/2014, 16h38
  2. Conseil et code ouverture fichier word...
    Par Angeldu74 dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 2
    Dernier message: 04/04/2006, 08h37
  3. flash code pour fichier video probleme swf
    Par fasilafer dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 3
    Dernier message: 24/02/2006, 09h37
  4. [Upload] un bug ds un code de fichiers
    Par jack_1981 dans le forum Langage
    R�ponses: 7
    Dernier message: 09/12/2005, 12h44
  5. R�ponses: 7
    Dernier message: 22/11/2005, 14h05

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