Pb error C2011 par pitié aidé moi

neonmix Messages postés 3 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 24 juin 2004 - 31 mai 2004 à 15:17
neonmix Messages postés 3 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 24 juin 2004 - 24 juin 2004 à 00:26
Voici mon prog:
c'est un garage ki possède des voitures, ces voitures peuvent être "de course" ou "de série" (classe mere voiture, classe fille voituredecourse,voiture de serie).
g mis dans la classe garage 2 vecteur, un pour les voiture de course, un pour les voiture de serie.
kan je compile il me trouve 1 erreur dans chaque .H des classes filles et g bo chercher je trouve pas ou est l'erreur, si vous trouvé vous me sauvez la vie ^^.
voici le code de l'appli:

GARAGE.CPP:
#include
#include "garage.h"
#include"voiture.h"
#include"voituredecourse.h"
#include"voituredeserie.h
#include<vector>
//déclaration du vecteur de type classe voiture
typedef vector<voituredecourse> voituredecourse_vector;
typedef vector<voituredeserie> voituredeserie_vector2;
void garage::init(char nom)
{
nomgarage=nom;
}
//méthode permettant de récupérer le nom du garage
char garage::getnomgarage()
{
return nomgarage;
}
//méthode ajouter qui permet d'ajouter un objet voiture à la collection de voiture de
//la classe garage, cette méthode prends en paramètre d'entrée un objet voiture de course
void garage::ajouter(voituredecourse voi)
{
v.push_back(voi);
}
//méthode ajouter qui permet d'ajouter un objet voiture à la collection de voiture de
//la classe garage, cette méthode prends en paramètre d'entrée un objet voiture de série
void garage::ajouter2 (voituredeserie voi)
{
v2.push_back(voi);

}
//méthode supprimer qui permet de supprimer un objet voiture de la collection de voiture
//de la classe garage, on connait son indice grâce au paramètre d'entrée "indice" de type
//entier (concernce les voitures de courses)
void garage::supprimer(int indice)
{
voituredecourse_vector::iterator it;
it=v.begin()+indice;
v.erase(it);
}
//méthode supprimer qui permet de supprimer un objet voiture de la collection de voiture
//de la classe garage, on connait son indice grâce au paramètre d'entrée "indice" de type
//entier (concernce les voitures de séries)
void garage::supprimer2(int indice)
{
voituredeserie_vector2::iterator it2;
it2=v2.begin()+indice;
v2.erase(it2);
}
//méthode retournervoiture qui renvoie un objet voiture de la collection de voiture de
//la classe garage, on connait son indice grâce au paramètre d'entrée "indice" de type entier
//(concerne les voitures de courses)
voiture garage::retournervoiture(int indice)
{
voituredecourse_vector::iterator it;
it=v.begin()+indice;
return *it ;
}
//méthode retournervoiture qui renvoie un objet voiture de la collection de voiture de
//la classe garage, on connait son indice grâce au paramètre d'entrée "indice" de type entier
//(concerne les voitures de courses)
voiture garage::retournervoiture2(int indice)
{
voituredeserie_vector2::iterator it2;
it2=v2.begin()+indice;
return *it2;
}

GARAGE.H:
#ifndef _garage
#define _garage
#include"voiture.h"
#include"voituredeserie.h"
#include"voituredecourse.h"
#include<vector>
using namespace std;
typedef vector<voituredecourse> voiture_vector;
typedef vector<voituredeserie> voiture_vector2;
class garage
{
//attributs privés
voiture_vector v;
voiture_vector2 v2;
char nomgarage;
public:
//méthodes publiques
void garage::init(char);
char garage::getnomgarage();
void garage::ajouter(voituredecourse);
void garage::ajouter2(voituredeserie);
void garage::supprimer(int);
void garage::supprimer2(int);
voituredecourse garage::retournervoiture(int);
voituredeserie garage::retournervoiture2(int);
};
#endif;

PROGGARAGE.CPP:(prog principal)
#include
//#include<stdAfx.h>
#include"garage.h"
#include"voiture.h"
#include"voituredecourse.h"
#include"voituredeserie.h"
#include<string>
using namespace std;
void definirgarage(char &);
voituredecourse definirvoiturecourse();
voituredeserie definirvoitureserie();
char definirchoix();
void ajoutervoituredecourse(voiture);
//void consultervoiture(garage);
void main()
{
char nom,rep;
garage gar;
definirgarage(nom);
gar.init(nom);
cout<<endl;

//choix possible pour la première opération
cout<<"Que voulez-vous faire?"<<endl;
cout<<endl;
cout<<"1 -->ajouter une voiture de course"<<endl;
cout<<"2 -->supprimer une voiture de course"<<endl;
cout<<"3 -->consulter une voiture de course"<<endl;
cout<<"4 -->ajouter une voiture de serie"<<endl;
cout<<"5 -->supprimer une voiture de serie"<<endl;
cout<<"6 -->consulter une voiture de serie"<<endl;
cout<<"7 -->fermer le programme"<<endl;
cout<<endl;

//saisie du choix
cout<<"saisir le chiffre correspondant a votre souhait"<<endl;
cin>> rep;

//tant que l'utilisateur ne choisit pas de fermer le programme alors ...
while(rep!='7')
{
//selon son choix faire ...
switch(rep)
{
//cas ajouter une voiture de course
case '1': cout<<"choix : ajouter une voiture de course"<<endl;
//void voituredecourse::init(char,char,char,int);
voituredecourse voi;
voi=definirvoiturecourse();
gar.ajouter(voi);
//choix suivant
rep=definirchoix();
break;
//cas supprimer une voiture de course
case '2': cout<<"choix : supprimer une voiture de course"<<endl;
voituredecourse voi2;
int ind2;
cout<<"vous voulez supprimer la voiture de course a quelle indice?(commence a 0)"<<endl;
cin>>ind2;
gar.supprimer(ind2);
//choix suivant
rep=definirchoix();
break;
//cas consulter une voiture de serie
case '3': cout<<"choix : consulter une voiture de course"<<endl;
voituredecourse voi3;
int ind3;
cout<<"vous voulez consulter la voiture de course a quelle indice?(commence a 0)"<<endl;
cin>>ind3;
voi3=gar.retournervoiture(ind3);
cout<<"la modele de la voiture est "<<voi3.getmodelevoiture()<<endl;
cout<<"la marque de la voiture est "<<voi3.getmarquevoiture()<<endl;
cout<<"la couleur de la voiture est "<<voi3.getcouleurvoiture()<<endl;
cout<<"la couleur de la voiture est "<<voi3.getpuissance()<<endl;
//choix suivant
rep=definirchoix();
break;
//cas ajouter une voiture de serie
case '4': cout<<"choix : ajouter une voiture de serie"<<endl;
voituredeserie voi4;
voi4=definirvoitureserie();
gar.ajouter2(voi4);
//choix suivant
rep=definirchoix();
break;
//cas supprimer une voiture de serie
case '5': cout<<"choix : supprimer une voiture de serie"<<endl;
voituredeserie voi5;
int ind5;
cout<<"vous voulez supprimer la voiture de serie a quelle indice?(commence a 0)"<<endl;
cin>>ind5;
gar.supprimer2(ind5);
//choix suivant
rep=definirchoix();
break;
//cas consulter une voiture de course
case '6': cout<<"choix : consulter une voiture de serie"<<endl;
voituredeserie voi6;
int ind6;
cout<<"vous voulez consulter la voiture de serie a quelle indice?(commence a 0)"<<endl;
cin>>ind6;
voi6=gar.retournervoiture2(ind6);
cout<<"la modele de la voiture est "<<voi6.getmodelevoiture()<<endl;
cout<<"la marque de la voiture est "<<voi6.getmarquevoiture()<<endl;
cout<<"la couleur de la voiture est "<<voi6.getcouleurvoiture()<<endl;
cout<<"le niveau de securite est de "<<voi6.getsecurite()<<endl;
cout<<"le niveau de confort est de "<<voi6.getconfort()<<endl;
//choix suivant
rep=definirchoix();
break;
//cas de l'erreur de saisie
default: cout<<"erreur de saisie, recommencez(1,2,3,4,5,6)"<<endl;
cin>> rep;
}

}

cout<<endl;
//message de fin
cout<<"Merci, au revoir"<<endl;
}
//procédure permettant de choisir la prochaine opération et par la même de faciliter le contrôle de saisie
char definirchoix()
{
char re;
cout<<"Que voulez-vous faire?"<<endl;
cout<<endl;
cout<<"1 -->ajouter une voiture de course"<<endl;
cout<<"2 -->supprimer une voiture de course"<<endl;
cout<<"3 -->consulter une voiture de course"<<endl;
cout<<"4 -->ajouter une voiture de serie"<<endl;
cout<<"5 -->supprimer une voiture de serie"<<endl;
cout<<"6 -->consulter une voiture de serie"<<endl;
cout<<"7 -->fermer le programme"<<endl;
cout<<endl;
cout<<"saisir le chiffre correspondant a votre souhait"<<endl;
cin>> re;
return re;
}
//procédure permettant de donner un nom au garage
void definirgarage(char &no)
{
cout<<"saisir le nom du garage"<<endl;
cin>>no;
}
//fonction permettant de définir un voiture de course et de la renvoyé dans le prog principal
//afin de pouvoir lajouter au vecteur
voituredecourse definirvoiturecourse()
{
char mod,mar,cou;
int puis;
cout<<"saisir le modele de la voiture de course"<<endl;
cin>>mod;
cout<<"saisir la marque de la voiture de course"<<endl;
cin>>mar;
cout<<"saisir la couleur de la voiture de course"<<endl;
cin>>cou;
cout<<"saisir la puissance(nbr de cheveaux) de la voiture de course"<<endl;
cin>>puis;
voituredecourse voi;
voi.init(mod,mar,cou,puis);
return voi;
}
//fonction permettant de définir un voiture de série et de la renvoyé dans le prog principal
//afin de pouvoir lajouter au vecteur
voituredeserie definirvoitureserie()
{
char mod,mar,cou;
int secu,conf;
cout<<"saisir le modele de la voiture de course"<<endl;
cin>>mod;
cout<<"saisir la marque de la voiture de course"<<endl;
cin>>mar;
cout<<"saisir la couleur de la voiture de course"<<endl;
cin>>cou;
cout<<"saisir le niveau de sécurité de la voiture(de 1 a 5)"<<endl;
cin>>secu;
cout<<"saisir le niveau de confort de la voiture(de 1 a 5)"<<endl;
cin>>conf;
voituredeserie voi;
voi.init(mod,mar,cou,secu,conf);
return voi;
}
VOITURE.H:

#ifndef _voiture
#define _voiture

//déclaration de la classe voiture
class voiture
{
protected :
//attributs privés
char modelevoiture;
char marquevoiture;
char couleurvoiture;
public :
//méthodes publiques
//void init(char,char,char);
char getmodelevoiture();
char getmarquevoiture();
char getcouleurvoiture();
};
#endif;
VOITURE.OBJ
VOITUREDECOURSE.H:
#include"voiture.h"

class voituredecourse : public voiture
{
//attributs privés
int puissance;
public :
//méthodes publiques
void voituredecourse::init(char,char,char,int);
int voituredecourse::getpuissance();
};
VOITUREDECOURSE.CPP:
#include
#include"voituredecourse.h"
#include"voiture.h"

void voituredecourse::init(char modele,char marque,char couleur,int puiss)
{
modelevoiture=modele;
marquevoiture=marque;
couleurvoiture=couleur;
puissance=puiss;
}

int voituredecourse::getpuissance()
{
return puissance;
}
VOITUREDESERIE.H:
#include"voiture.h"
class voituredeserie : public voiture
{
//attributs privés
int securite;
int confort;
public :
//méthodes publiques
void voituredeserie::init(char,char,char,int,int);
int voituredeserie::getsecurite();
int voituredeserie::getconfort();
};
VOITUREDESERIE.CPP:
#include
#include"voiture.h"
#include"voituredeserie.h"

void voituredeserie::init(char modele,char marque,char couleur,int secu,int conf)
{
modelevoiture=modele;
marquevoiture=marque;
couleurvoiture=couleur;
securite=secu;
confort=conf;
}

int voituredeserie::getsecurite()
{
return securite;
}

int voituredeserie::getconfort()
{
return confort;
}

3 réponses

neonmix Messages postés 3 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 24 juin 2004
31 mai 2004 à 15:20
l'erreur se localise a ces lignes précisent (-->):
#include"voiture.h"

--> class voituredecourse : public voiture
"c:\bts\ap\objet\voituredecourse.h(3) : error C2011: 'voituredecourse' : 'class' type redefinition"
{
//attributs privés
int puissance;
public :
//méthodes publiques
void voituredecourse::init(char,char,char,int);
int voituredecourse::getpuissance();
};

#include"voiture.h"
-->class voituredeserie : public voiture
"c:\bts\ap\objet\voituredeserie.h(2) : error C2011: 'voituredeserie' : 'class' type redefinition"
{
//attributs privés
int securite;
int confort;
public :
//méthodes publiques
void voituredeserie::init(char,char,char,int,int);
int voituredeserie::getsecurite();
int voituredeserie::getconfort();
};
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
2 juin 2004 à 15:10
met systématiquement le code des .h entre #ifndef ...#define... #endif...
pour éviter les inclusions multiples.

sans cela, les fichiers "voituredecourse.h" et "voituredeserie.h" sont inclus plusieurs fois dans "garage.cpp" :

#include"garage.h"
#include"voiture.h"
#include"voituredecourse.h"
#include"voituredeserie.h"

avec déjà dans "garage.h"
#include"voiture.h"
#include"voituredeserie.h"
#include"voituredecourse.h"
0
neonmix Messages postés 3 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 24 juin 2004
24 juin 2004 à 00:26
michi bcp ^^, tain loubli bete jte jure, ah et mon prog ne gérè pas les chaine de caractères bien qu'incluant la bibliotèk string, la solution a été d'enlever le .h de #include -_- ; alors la g pas capté pourkoi mais bon l'essentiel c ke ca marche ^^
0
Rejoignez-nous