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: expected primary-expression before 'int'


Sujet :

C++

  1. #1
    Membre averti Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut error: expected primary-expression before 'int'
    Bonjour...
    pas fier mais bon, voilà un truc que je ne pige pas:
    Pourquoi il me dit:
    error: expected primary-expression before 'int' 4 fois de suite et
    error: expected primary-expression before 'marque'
    error: expected primary-expression before 'couleur'
    pour cette implémentation de constructeur:
    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
     
    #include <iostream> 
    #include "Camion.h"
    // #include "Vehicule.h"
    /* dans ton fichier Camion.cpp tu inclus Camion.h qui inclut dejà Vehicule.h,
    * donc à priori pas besoin de ré-inclure Vehicule.h dans Camion.cpp */
     
    using namespace std;
     
     int tonnage(3);
    Camion :: Camion(int tonnage) :
      Vehicule (int prix, int nbRoues, int annee, int vitesse, std::string marque, std::string couleur),
      m_tonnage(tonnage)
      {
      }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Par défaut
    Je suis sur un tel donc c est pas pratique pour les copier coller mais ton initialisation de vehicule ressemble a (trop) s y meprendre a une sorte de declaration de fonction.... c est super zarbi.
    Si tu appelles une fonction tu ne dois pas mettre les types des variables, seulement les variables a envoyer a la fonction.

  3. #3
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Le problème est que le constructeur de camion doit prendre en paramètre ceux de vehicule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Camion :: Camion(int prix, int nbRoues, int annee, int vitesse, std::string marque, std::string couleur, int tonnage) :
      Vehicule (prix, nbRoues, annee, vitesse, marque, couleur),
      m_tonnage(tonnage)
      {
      }
    Ensuite ceci n'a rien à faire ici. Le tonnage sera entré lors de l'instantiation de Camion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vehicule* camion = new Camion(30000, 6, 1990, 90, "MAN", "Bleu", 20/*tonnage*/);
    #edit
    Si pour Camion le tonnage est fixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Camion :: Camion(int prix, int nbRoues, int annee, int vitesse, std::string marque, std::string couleur) :
      Vehicule (prix, nbRoues, annee, vitesse, marque, couleur),
      m_tonnage(3)
      {
      }

  4. #4
    Membre averti Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    @ BagonV: Bonsoir et pardon d'avoir tant tardé à répondre. Mais bon, il me faut réfléchir à votre réponse, réviser; et puis voilà:vous me dites que j'appelle le constructeur Vehicule et quand
    j'appelle une méthode, je ne dois l'appeler que avec ses variables sans
    mentionner leurs tvpes.
    OK, je vais faire ainsi dans tous les .cpp, comme ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Vehicule (prix, nbRoues, annee, vitesse, marque, couleur),
    ce qui =>:
    error: 'prix' was not declared in this scope
    bon, c'est quoi, ce foutoir?? les variables ont été déclarées dans la classe-mère
    Vehicule que ici je dis que la classe Camion hérite! ça ne se hérite pas,
    les variables???

  5. #5
    Membre averti Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut
    @PilloBuenaGente: j'ai suivi tes conseils sur toutes mes classes comme
    pour Camion.cpp:
    d'abord pour le tonnage dans la classe Camion: j'avais mis 3 comme une
    valeur-bidon; mais OK, révision pages 53 et 53, quand on ne sait pas quoi, on
    ne met rien et pas de parenthèses non plus:
    int tonnage;
    et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Camion :: Camion(int prix, int nbRoues, int annee, int vitesse, std::string
    marque, std::string couleur, int tonnage) :
      Vehicule (prix, nbRoues, annee, vitesse, marque, couleur),
      m_tonnage(tonnage)
      {
      }
    les autres classes-fille à l'identique.
    Mais le compilateur décidemment, il ne m'aime pas et me balance:
    Camion.cpp|34|error: prototype for
    ‘Camion::Camion(int, int, int, int, std::string, std::string, int)’ does not
    match any in class ‘Camion’|
    heu... j'ai pas fait quoi, là??? il veut que pour chacune des classes je me
    retape les déclarations de variables de la classe-mère Vehicule ???
    L'héritage, c'est de la blague??? on hérite de presque rien??? à quoi ça sert
    alors???
    et pour bien me punir, il rajoute :
    Camion.h|7|error: candidates are: Camion::Camion(const Camion&)|
    Camion.h|13|error: Camion::Camion(int)|
    Bon, là, j'avoue, je suis un peu (beaucoup) découragé...
    Vu ma santé, ferai peut-être mieux d'apprendre mes prières plutôt que le C++ ;
    non, je rigole; pour cacher que je suis si bête.
    Je vous adjoins mon Camion.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
    23
    #ifndef CAMION_H_INCLUDED
    #define CAMION_H_INCLUDED
    #include <iostream>
    #include <string>
    #include "Vehicule.h" // ben oui, pour en hériter
     
    class Camion: public Vehicule  // ici est la ligne 7 error
    {
      public:
        // le constructeur de la classe Camion:
        Camion (int tonnage); // ici est la ligne 13: error 
        virtual ~Camion(); 
        /* de toute façon, à quoi sert ce destructeur ? puisque je delete dans le
         * main, en fin de job, avec la boucle for  */
         virtual void affiche() const; 
      private:
       /* la classe-mère a en protected les attributs m_prix, m_nbRoues, m_annee,
        * m_vitesse, m_marque; ces attributs sont hérités par cette classe Camion
        * J'ajoute un attribut spécifique aux seuls camions: le tonnage: */
        int m_tonnage;
    };
     
    #endif // CAMION_H_INCLUDED
    Ou alors j'apprends à planter des choux???

  6. #6
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par moniroje Voir le message
    error: 'prix' was not declared in this scope
    C'est souvent une erreur orthographique.
    La réponse est sans doute dans la ligne du dessus.

    Citation Envoyé par moniroje Voir le message
    les autres classes-fille à l'identique.
    Comment ça à l'indentique ?
    Citation Envoyé par moniroje Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Camion (int tonnage); // ici est la ligne 13: errorCamion (int tonnage);
    // ici est la ligne 13: error
    La déclaration de la variable(ou autre) doit correspondre entre le fichier source(.cpp) et le header(.h)
    Celle de Camion.h devrait être :
    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
    23
    #ifndef CAMION_H_INCLUDED
    #define CAMION_H_INCLUDED
    #include <iostream>
    #include <string>
    #include "Vehicule.h" // ben oui, pour en hériter
     
    class Camion: public Vehicule  // ici est la ligne 7 error
    {
      public:
        // le constructeur de la classe Camion:
        Camion (int prix, int nbRoues, int annee, int vitesse, std::string marque, std::string couleur, int tonnage); // ici est la ligne 13: error 
        virtual ~Camion(); 
        /* de toute façon, à quoi sert ce destructeur ? puisque je delete dans le
         * main, en fin de job, avec la boucle for  */
         virtual void affiche() const; 
      private:
       /* la classe-mère a en protected les attributs m_prix, m_nbRoues, m_annee,
        * m_vitesse, m_marque; ces attributs sont hérités par cette classe Camion
        * J'ajoute un attribut spécifique aux seuls camions: le tonnage: */
        int m_tonnage;
    };
     
    #endif // CAMION_H_INCLUDED
    #Edit
    Camion.h|7|error: candidates are: Camion::Camion(const Camion&)|
    Camion.h|13|error: Camion::Camion(int)|
    Ici le compilateur donne la fonction qui est sensée servir, et celle qu'on lui envoie.

    #Edit II
    Exemple bidon des hierarchies :
    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
    23
    24
    25
    26
    27
    28
    29
    class Mere
    {
    public:
    	int a;
    protected:
    	int b;
    private:
    	int c;
    };
     
    class Fille : public Mere
    {
            Fille()
    	{
    		a = 5;//OK
    		b = 5;//OK
    		c = 5;//ERROR
    	}
    };
     
    int main()
    {
    	Mere* f = new Fille();
    	f->a = 5;//OK
    	f->b = 5;//ERROR
    	f->c = 5;//ERROR
     
    	return 0;
    }

  7. #7
    Membre averti Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Par défaut Ça y est!!!
    Enfin, enfin!!! j'ai réussi!!!
    ça marche!!!!
    c'est trop trop bien!!!
    En effet,
    La déclaration de la variable(ou autre) doit correspondre entre le fichier source(.cpp) et le header(.h)
    c'était un doux boxon!!! et aussi que je déclarais nbPortes dans la classe Vehicule mais aussi dans la classe Voiture,
    mais bon, voilà la console et qui me demande ce que je veux....
    et qui me propose ce que je demande...
    hi hi, chuis trop content!!!
    reste que je dois relever toutes vos remarques et annoter le pdf de mon tuto C++
    pour ne plus retomber dans mes erreurs.
    Reste aussi que mon job, il me propose par exemple un camion.... voici un Mercedes et si ça ne me plaît pas, le Mercedes, il ne me propose pas ce qu'il a aussi: le combi VW; vais arranger cela. Puis continuer le tuto C++...
    Mais auparavant un grand merci à vous, pour votre patience et la clarté de vos explications...

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

Discussions similaires

  1. expected primary-expression before '->' token
    Par namecha dans le forum Débuter
    Réponses: 2
    Dernier message: 14/04/2012, 15h50
  2. Réponses: 2
    Dernier message: 16/11/2011, 11h25
  3. Réponses: 2
    Dernier message: 08/02/2010, 10h00
  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