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 :

Inclusion de header dans main.cpp + problème de déclaration de classe


Sujet :

C++

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut Inclusion de header dans main.cpp + problème de déclaration de classe
    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'inclus 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 mien.

    /*

    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.


    je ne comprends pas vraiment mon erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include<string.h>
     
    int main(){
     
     return 0;
    }
    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 TRAVELCMANAGER_H
    #define TRAVELCMANAGER_H
     
    class TravelManager {
     
    public:
            TravelManager(int );
            ~TravelManager();
     
            //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)
     
            //Get
            void displayPgrData();
            void displayTravelData();
     
    private:
            char *pgrName;
            int test;
    };
    #endif
    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
    /**********************
     
    travelcManager.cpp
     
    **********************/
     
    TravelManager::TravelManager(int num){
     
            test  = num;
            pgrName = new char[12];
     
    }
     
    TravelManager::~TravelManager(){
     
        if(pgrName){
                    pgrName = "";
        }
    }
     
    void TravelManager::setPgrData(char *name, bool smoker, char *destination){
     
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 762
    Par défaut
    Citation Envoyé par lizeur1994 Voir le message
    je ne comprends pas vraiment mon erreur
    moi non plus

    Où sont les implémentations des méthodes void displayPgrData(); et void displayTravelData(); ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TravelManager::~TravelManager(){
     
        if(pgrName){
                    pgrName = "";
        }
    }
    Ton destructeur est mauvais. Cela ne fonctionne pas comme cela - tu n'as pas de ramasse-miettes ("garbage collector" en anglais) delete[] pgrName; pgrName = NULL /* or nullptr*/;

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 643
    Par défaut
    Salut,

    En lecture rapide:
    • <string.h> (main.cpp), c'est un fichier d'en-tête issu du C. De loin, je dirais qu'il n'a rien à foutre là
    • void setPgrData(char *, bool, char *); (a) A moins que ce ne soit un nom de fonction imposé par ton prof (qui mériterait alors le fouet), essaye de choisir des noms de fonction qui indiquent un minimum ce qu'elles sont sensées faire... Tu n'imagine pas le temps que l'on peut gagner simplement quand les choses sont correctement nommées. Et tu ne dois pas vraiment t'en faire pour la longueur du nom que tu choisi, pour autant qu'il indique clairement (même à ceux qui ne sont pas juste à coté de toi) à quoi la "chose désignée" doit servir
    • void setPgrData(char *, bool, char *); (b) si tu dois manipuler des chaines de caractères, tu aurais largement intérêt à utiliser std::string
    • pgrName = new char[12];, char *pgrName; tout ce qui utilise pgrName, en fait, devrait manipuler des std::string... D'autant plus que, là, tu te retrouve avec une belle fuite mémoire
    • Pour le reste, il maque tellement dans ton code qu'il est difficile de voir les problèmes qui s'y cachent
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut
    Citation Envoyé par foetus Voir le message
    ...
    Si je comprends bien je suis complètement à côté de la plaque 😢😢

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 643
    Par défaut
    Heuu ... oui, en effet ... Mais c'est toi qui l'a dit
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    - main inclue un header C
    - main n'inclue à aucun moment la classe
    - l'implémentation de la classe n'inclue pas sa définition
    - l'implémentation de la classe est incomplète
    - const char*
    - std::string
    - tu as une erreur que tu ne donnes jamais
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 3
    Par défaut
    merci beaucoup je crois avoir compris

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

Discussions similaires

  1. inclusions de headers dans un projet
    Par jj_du_12 dans le forum C++
    Réponses: 6
    Dernier message: 24/01/2013, 12h18
  2. [Débutant]Problème dans main.xml
    Par Faf95c dans le forum Android
    Réponses: 3
    Dernier message: 10/10/2011, 14h37
  3. Problème inclusion jar lib dans programme web ( tomcat )
    Par spy74 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/04/2011, 17h51
  4. [MySQL] probléme header dans ma page
    Par spidercrash dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/05/2010, 12h33
  5. Problème de déclaration de classe
    Par Xzander dans le forum C#
    Réponses: 5
    Dernier message: 24/07/2007, 20h29

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