[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

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
blurk Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   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
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
pom
 
Re salut

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

Pom
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
titou
 
Je n'arrive pas a me separer de ce probleme .... :-//
0
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
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
pom
 
as-tu aussi retirer le ; après ton constructeur dans le .cpp et as-tu retirer le seconde #include "Vehicule.h" ?
0
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
pom
 
Salut, tu as un warning ou bien ca ne compile pas du tout ?
as-tu des fonctions inline ?

pom
0
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
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
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