Partage
  • Partager sur Facebook
  • Partager sur Twitter

structure définition

    10 octobre 2019 à 14:39:59

    Bonjour,

    j'essaye de créer une stucture date mais j'obtiens une erreur : "Jour" is not a class or a namespace. Ou encore "struct Date has no member named Jour". Je suis débutant mais je pense que je n'ai pas besoin de le préciser. Merci de votre aide.

    Le main.cpp

    #include <iostream>
    #include "date.h"
    using namespace std;
    
    int main()
    {Date d;
    d.Jour=Jour::lun;
    cout << d.Jour << ; endl;
        return 0;
    }

     Le date.h

    #ifndef DATE_H_INCLUDED
    #define DATE_H_INCLUDED
    using namespace std;
    
    enum class Jour{lun=1,mar,mer,jeu,ven,sam,dim};
    enum class Mois{jan=1,fev,mar,avr,mai,jui,juil,aou,sep,oct,nov,dec};
    struct Date{ Jour j; Mois m ; int Annee;};
    
    #endif // DATE_H_INCLUDED
    



    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2019 à 15:33:57

      Bonjour,

      - Es-tu sûr d'inclure le "bon" fichier date.h. Parfois on a plusieurs fichiers de même nom à plusieurs endroits?
      - Il y a un point-virgule de trop ligne 8!
      - Attention : on doit éviter à tout prix d'utiliser using namespace niveau global, en tout cas surtout pas dans fichier d'entête, attends toi à plein d'erreurs bizarres à cause de cela.
      - Peut-être que enum class n'est pas compris si ton compilateur est d'avant le C++11 ou si la fonctionnalité n'a pas été activée (std=c++11 ou std=c++14 ou std=c++17)

      • Partager sur Facebook
      • Partager sur Twitter

      En recherche d'emploi.

        10 octobre 2019 à 15:34:24

        La variable membre de ta struct Date qui correspond au jour ne s'appelle pas Jour, mais j, donc utilise d.j

        Il ne faut surtout pas utiliser using namespace std dans un header, cela "contamine" toutes les unités de compilation qui incluent ce header.

        • Partager sur Facebook
        • Partager sur Twitter
          10 octobre 2019 à 17:01:10

          Merci pour vos réponses. 

          Donc en effet 

          - point virgule en trop ligne 8

          - d.j et pas d.Jour

          - c++11 non coché dans la liste des compilateurs

          Pas de soucis pour le reste mais je prends note pour l'espace de nom.

          Merci encore :)

          -
          Edité par Alexique0 10 octobre 2019 à 17:03:02

          • Partager sur Facebook
          • Partager sur Twitter
            10 octobre 2019 à 17:20:23

            Tu peux même utiliser -std=c++17 maintenant. Bienvenue en 2019 (et bientôt en 2020).
            • Partager sur Facebook
            • Partager sur Twitter

            git is great because Linus did it, mercurial is better because he didn't.

              10 octobre 2019 à 23:17:56

              Pas de c++14 ou 17 dans ma liste de compilateurs... Il faut les télécharger ? Ou c'est plus simple de réinstaller code block dans sa totalité ?
              • Partager sur Facebook
              • Partager sur Twitter

              structure définition

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown