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 :

l'erreur expected primary-expression before ‘&’ token


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut l'erreur expected primary-expression before ‘&’ token
    Bonjour à tous
    jai une classe étudiant qui hérite d'une classe personne ayant une méthode void ecrire(ostream&)const. Ma méthode écrire affiche une personne sous le format: Personne(nom, prenom). Je veux implémenter une méthode ecrire() dans la classe étudiant qui affiche un étudiant sous le format Etudiant(Personne(nom, prenom), Ine) et cela en me servant de la méthode ecrire de la classe personne comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void Etudiant::ecrire(ostream& os){
    	os << "Etudiant("<< Personne::ecrire(ostream& os)<<","<<Ine<<")"<<endl;
    mais jai l'erreur expected primary-expression before ‘&’ token et je c pas ski manque.

    voici mes classes:
    Personne.h
    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
    20
    21
    22
    #ifndef DEF_PERSONNE
    #define DEF_PERSONNE
    #include <string>
    #include <iostream>
     
    using namespace std;
     
    class Personne
    {
    protected:
    	string nom;
    	string prenom;
    public:
    	Personne();
    	Personne(string ,string);
    	~Personne();
    	void ecrire(ostream&)const;
     
    	friend ostream & operator<<(ostream & os , Personne &P);
    	friend istream & operator>>(istream & is, Personne &P);
    };
    #endif
    Personne.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
    18
    19
    20
    21
    22
    #include <iostream>
     
    #include "Personne.h"
     
    using namespace std;
     
    Personne::Personne():nom("inconnu"),prenom("inconnu"){
    	cout<<"Personne::Personne()"<<endl;
    }
     
    Personne:: Personne(string nomRecu, string prenomRecu):nom(nomRecu),prenom(prenomRecu){
    	cout<<"Personne:: Personne(String nom, String prenom)"<<endl;
    }
     
    Personne:: ~Personne(){
    	cout<<"Personne::~Personne()"<<endl;
    }
     
    void Personne::ecrire(ostream& os) const {
     
    	os<<"Personne("<<nom<<","<<prenom<<")"<<endl;
    }
    Etudiant.h
    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
    #ifndef DEF_ETUDIANT
    #define DEF_ETUDIANT
     
    #include "Personne.h"
    #include <string>
     
    class Etudiant: public Personne
    {
    protected:
    	std::string Ine;
    public:
    	Etudiant();
    	Etudiant(string, string, string);
        	~Etudiant();
    	void ecrire(ostream&);
     
    	friend ostream & operator<<(ostream & os , Personne &P);
    };
    #endif
    Etudiant.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
    18
    19
    20
    #include <iostream>
    #include "Etudiant.h"
     
    using namespace std;
     
    Etudiant::Etudiant():Ine("inconnu"){
    	cout<<"Etudiant::Etudiant()"<<endl;
    }
     
    Etudiant::Etudiant(string nomRecu,string prenomRecu,string IneRecu):Personne(nomRecu,prenomRecu),Ine(IneRecu){
    	cout<<"Etudiant de nom: "<<nom<<"\t et de prenom : "<<prenom<<"\t de numéro ine:"<<Ine<<endl;
    }
     
    Etudiant::~Etudiant(){
    	cout<<"Etudiant::~Etudiant()"<<endl;
    }
     
    void Etudiant::ecrire(ostream& os){
    	os << "Etudiant("<< Personne::ecrire(ostream& os)<<","<<Ine<<")"<<endl;
    }
    voilà!
    je sais pas trop où ça cloche. Merci de bien vouloir m'aider ce serait gentil

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour Techne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personne::ecrire(ostream& os)
    permet de définir une fonction. Pour l'appeler, il faut simplement écrire :
    Ton code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Etudiant::ecrire(ostream& os)
    {
       os << "Etudiant(" << Personne::ecrire(os) << "," << Ine << ")" << endl;
    }
    PS: utilise les balise CODE pour que ton code soit plus lisible.

  3. #3
    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
    Bonjour et bienvenu,
    Ne pas faire de using namespace dans les .h F.A.Q. : Quand utiliser / ne pas utiliser using namespace ?

    F.A.Q Comment utiliser les flux pour afficher ou saisir mes objets ?
    Mais plus probablement : Comment surcharger correctement l'opérateur << pour afficher des objets polymorphes ?

    + problème de const sur les paramètres de >>.

Discussions similaires

  1. Expected primary-expression before 'void'
    Par aybayb dans le forum Débuter
    Réponses: 4
    Dernier message: 11/12/2012, 16h06
  2. expected primary-expression before '->' token
    Par namecha dans le forum Débuter
    Réponses: 2
    Dernier message: 14/04/2012, 15h50
  3. Réponses: 2
    Dernier message: 16/11/2011, 11h25
  4. Réponses: 3
    Dernier message: 15/05/2009, 16h18
  5. expected primary-expression before '=' token
    Par steph_p dans le forum Débuter
    Réponses: 4
    Dernier message: 02/02/2009, 16h03

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