[C++ Bulder ] : Impossible de créer l'en-tête

titou -  
 titou -
[C++ Avertissement] VEHICULE.CPP(14): W8058 Impossible de créer l'en-tête pré-compilé : code dans l'en-tête
qu'est ce que ce type d'erreur ??? :-/

13 réponses

  1. pom
     
    Salut Titou, peux-tu nous envoyer le debut de ton fichier vehicule.cpp s'il te plait (tous les #include du moins)

    merci
    0
  2. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    salut
    ca veut dire qu'il y a du code dans vehicule.h (ou.hpp?)
    alors qu'il ne devrait y'avoir que les prototypes des fonctions
    propres à vehicule.c
    le code doit être dans Vehicule.C et pas ailleurs

    explication

    - contenu d'un fichier .H:

    void mafonction();

    contenu d'un fichier .CPP ( ou.C )

    void mafonction()
    {
    // ecrire le code ici
    }

    Il est fini le temps où les compilateurs permettaient
    d'écrire du code dans un header, ou bien de faire #include "monfichier.c" au lieu de "monfichier.h"
    Les compilateurs c et c++ sont de plus en plus sévères, et c'est tant mieux, ça permet de faire du code plus facile à exporter. On est sûr de faire un travail plus propre.
    bienvenue dans la programmation structurée!

    cordialement
    0
  3. titou
     
    Le .h
    ******************************************************
    #define __VEHICULE_H_

    class Atelier;
    class Entretien;

    class Vehicule
    {

    public:
    Vehicule();
    ~Vehicule();

    void init(int nbKmActuel,int mesEntretiens, char numImma[8]);

    int getNbKmActuel();
    int getUnEntretien();
    int getNbEntretiens();
    void ajouteEntretien();

    Atelier* LesVehicule;
    Entretien** LesEntretients;

    protected:

    private:

    char numImma[8] ;
    int nbKmActuel ;
    int mesEntretiens ;

    };

    #endif // #define __VEHICULE_H_
    ******************************************************

    Le .cpp
    ******************************************************
    // --------------------------------------------------------------------
    // Vehicule.cpp : source file of class Vehicule
    // --------------------------------------------------------------------

    #include "Vehicule.h"
    #include "Vehicule.h"

    #include "Atelier.h"
    #include "Entretien.h"

    /*Constructeur destructeur*/

    Vehicule::Vehicule()
    {
    char plaque[8];
    int nbKm;
    int Entretient;
    cout << "Saisir les informations necessaire a la creation d un vehicule : " << endl;
    cout << "Num plaque : " ;
    cin >> plaque;
    cout << "Nombre Km : " ;
    cin >> nbKm;
    // Pour les entretients c'est une collection d'entretient.
    init(nbKm,1,plaque);

    };

    Vehicule::~Vehicule()
    {

    }
    /*------------------------*/
    void Vehicule::init(int nbKmActuel,int mesEntretiens, char numImma[8])
    {

    }

    int Vehicule::getNbKmActuel()
    {
    return 0;
    }

    int Vehicule::getUnEntretien()
    {
    return 1;
    }

    int Vehicule::getNbEntretiens()
    {
    return 0;
    }

    void Vehicule::ajouteEntretien()
    {

    }

    ******************************************************

    Mercide vos reponse
    0
    1. pom
       
      Re salut

      Tu n'as pas besoin de mettre un ";" après ton constructeur dans ton .cpp

      Pom
      0
  4. pom
     
    Salut , commence ton .h par
    #ifndef _VEHICULE_H (rajoute deja cette ligne, ca evite de definir deux fois la variable)
    #define _VEHICULE_H

    et tout à la fin
    #endif

    Pourquoi fais-tu deux fois #include "Vehicule.h" dans ton .cpp ?

    pom
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pom
     
    Salut encore une fois

    Je viens de voir autre chose encore
    as-tu bien mis
    #include<iostream>
    using std::cout;
    using std::cin;
    using std::endl;

    ou as-tu fais exprès de ne pas nous les envoyer ?

    pom
    0
  7. titou
     
    Ok Merci de vos reponse rapide.

    J'ai generer le code c++ depuis windesignor sur lequelle j'ai effectuer la modelisation UML (diagramme de classe), de ce fait certaine ligne de code se sont rajouté.

    voila le debut du cpp
    ***********************************************
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>

    #include "Vehicule.cpp"
    #include "4_Roues.cpp"
    #include "2_Roues.cpp"
    #include "Entretien.cpp"
    #include "EntretienType.cpp"
    #include "Atelier.cpp"

    main ()
    {

    Roues4 r1;
    cout << r1.getNbKmActuel() << endl;

    ;

    getch ();
    }
    ************************

    Je vasi regarder les notes que vous m'avez fournies
    0
  8. titou
     
    Je n'arrive pas a me separer de ce probleme .... :-//
    0
  9. pom
     
    salut

    je ne connais pas la fct getch(); que fait-elle. D'habitude, je fais
    int main()
    {
    blabla
    return 0;
    }
    Ca ne réponds surement pas à ton pb.
    Que te dit le compilateur maintenant ?

    bonne soirée
    pom
    0
  10. titou
     
    getch (); = permet de faire une pausse jusqu'a ce que la personne appui sur une touche pour continuer le deroulement du programme.

    Le compilateur me repond toujours le meme avertissement .... snif !!!!
    0
    1. pom
       
      as-tu aussi retirer le ; après ton constructeur dans le .cpp et as-tu retirer le seconde #include "Vehicule.h" ?
      0
    2. pom
       
      normalement, dans le .cpp on ne fait que des #include "blalba.h" et non "blabla.cpp". Dans ton makefile tu compile les .cpp qui eux appellent les .h

      A propos, ton makefile est-il bien fait ? prend-il tous les fichiers en compte ?
      0
  11. pom
     
    Salut, tu as un warning ou bien ca ne compile pas du tout ?
    as-tu des fonctions inline ?

    pom
    0
  12. titou
     
    c'est jsute des warning, j'ai matter avec mes prof ce matin et c'est windesign qui a ecrit du code a la con j'ai donc changer de logiciel de modelisation uml pour genrer mon code
    0
  13. pom
     
    Ok, mais ca marche maintenant ?
    ton .cpp ne m'a pas l'air très grand ni meme tes classes. Pourquoi ne fais-tu pas tout à la main ?
    (mais peut-etre que tu nous a montré qu'une partie de ton prgm...)
    0
  14. titou
     
    oui c'est juste une partie programme :-)
    Le code d'avant fonctionne mais j'ai toujours la meme erreur d'entête !!!
    Du coup j'ai pris un nouveau logiciel de modelisation uml
    CLASSBUILDER mais toujours ce probleme d'entête mais au moin sa compile tout le projet et sa focntionne bien.

    presenter ici http://uml.developpez.com/outils/

    qui focntionne tres bien et du 1er coup, ce qui est mieux lolll
    De plus c'est un tout en un car ds ce logiciel on peut integrer les partie de code propre a chaque methode, ce qui permet de garder toujours une vue au niveau analyse du programme objet.

    je ne suis qu'au debut de la conception mais pour le moment sa ce passe bien....
    Merci de ton aide
    0