goddez
Messages postés2Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention17 mai 2009
-
17 mai 2009 à 19:35
goddez
Messages postés2Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention17 mai 2009
-
17 mai 2009 à 23:40
Bonjour à tous :),
Je rencontre un problème plutôt spéciale depuis 2 jours et je n'arrive pas à mettre le doigt sur ce qui n'est pas correct. Je déclare une classe dans un .h comme d'habitude, je défini certaines partie de la classe dans un .cpp et j'inclu le .h dans main.cpp. Jusque là tout devrait bien aller. J'écris un programme pour un exercice d'un cour. voici l'explication de l'exercice plus le code que j'ai écris. Note: J'ai fais une recherche sur un problème semble mais je n'ai rien trouvé qui se rapproche du miens.
/*
Exercice 2 (5 points)
Une compagnie d'autobus vient d'acheter un ordinateur pour son
nouveau système de réservations informatisé. Cette compagnie
possède 2 autobus; ces autobus transportent 2000 passagers par
année vers New York. Le voyage aller et retour est de 3 jours.
Écrivez un programme qui attribue des sièges aux passagers lors
d'un voyage, en tenant compte que chaque autobus transporte soit
des fumeurs, soit des non-fumeurs.
Le programme doit afficher le menu suivant :
* Appuyez sur 1 pour non-fumeurs
* Appuyez sur 2 pour fumeurs
Si la réponse est 1, le programme attribue un siège dans un autobus
de non-fumeurs (1 à 40). Dans le cas contraire, il attribue un siège
dans un autobus de fumeurs (1 à 40). De plus, le programme devrait
afficher à l’écran un document de voyage qui indique si le passager
est dans un autobus de fumeurs ou de non-fumeurs et combien de
passagers il y a dans l'autobus.
//Set
void setPgrData(char *, bool, char *); //Ajout du nom du passager
//et s'il est fumeur, création de la destination.
//(string name, bool smoker, string destination)
L'erreur que j'obtient avec visual C++ express 2008 est :
1>------ Build started: Project: test1, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\users\portced\documents\docs\cpp\travail_trois\test1\test1\main.cpp(7) [à la ligne -> void main(){] : error C2628: 'TravelManager' followed by 'void' is illegal (did you forget a ';'?)
1>c:\users\portced\documents\docs\cpp\travail_trois\test1\test1\main.cpp(7)[à la ligne -> void main(){] : error C3874: return type of 'main' should be 'int' instead of 'TravelManager'
1>Build log was saved at "file://c:\Users\PortCed\Documents\Docs\Cpp\travail_trois\test1\test1\Debug\BuildLog.htm"
[C++ Error] main.cpp(8)[à la ligne -> void main(){]: E2176 Too many types in declaration
[C++ Error] main.cpp(8)[à la ligne -> void main(){]: E2111 Type 'TravelManager' may not be defined here
Avec l'erreur de visual studio, j'ai un indice me disant que la
déclaration de la classe ou son inclusion ne se fait pas correctement,
mais je ne comprend vraiment pas ce qui pourrait causer ce problème.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 17 mai 2009 à 20:51
A vue d'oeil:
- int main() et pas void main().
- Il faut un ";" après une accolade quand tu déclares une classe.
Quelques pratiques:
- On laisse le nom de arguments dans les signatures de la classe, ça permet de documenter le code (surtout si tu fais du doxygen après).
Remarques facultatives:
- .h/.cpp => préfère .hh/.cc ou .hpp/.cpp (Mais ça reste une bonne
pratique peu connue, que je ne me permettrais pas d'imposer).
- Les accolades alignées verticalement sont plus lisibles (question de goût).
goddez
Messages postés2Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention17 mai 2009 17 mai 2009 à 23:40
Merci bcp pour ton aide. C'était vraiment ridicule de ma part cet oubli de ";".
Pour main je croyais que retour de donné ou pas de retour du tout n'y changeait rien. Merci pour le hint! :)
En ce qui concerne tes conseils de pratiques je vais garder ça en tête.
Pour tes remarques sur la terminaison d'un fichier, c'est une bonne idée je trouve, surtout pour différencier le c du c++.