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 :

[debutant] no such file or directory + creation d'enumerations


Sujet :

C++

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [debutant] no such file or directory + creation d'enumerations
    Bonjour,

    je débute en C++ et je rencontre 2 problèmes lorsque j'essaie de compiler mon premier petit programme.
    Tout d'abord,
    j'ai un fichier Couleur.cpp qui fait partie de mon projet (Sous CodeBlock).

    Mon fichier main commence avec ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <Couleur.cpp>
    //#include <iostram>
    int main()
    Et pourtant à la compilation j'ai un "Couleur.cpp : no such file or directory" ...comme s'il ne trouvait pas le fichier qui fait partie du projet ... Est-ce à dire que lorsque l'on a un projet avec un dossier principal et des sous dossiers, il faut configurer "à la main" pour que le compilateur aille chercher dans les sous-dossiers?

    Si oui, comment faire?

    Enfin j'aurais une autre question ( je me permets de la mettre dans le meme post car elle va peu-être rejoindre la première) : j'aimerais pouvoir définir mes "Couleurs" ( une classe) par un constructeur qui prendrait un nom de couleur.

    Par exemple

    Couleur a=new Couleur("Rouge");

    Je voudrais que les couleurs autorisées pour les noms de couleurs soient dans une énumeration. Celle-ci dépendant de la classe Couleur je voulais mettre cette énumeration dedans j'ai donc essayé successivement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static  enum
    nomCouleur("Blanc","Bleu","Jaune","Vert","Rouge","Noir");
    dans ma classe mais j'ai eu l'erreur :
    error: use of enum NomdeCouleur without previous declaration.


    puis un fichier enum.h qui contient uniquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public enum
    nomCouleur(enum couleurNom("Blanc","Bleu","Jaune","Vert","Rouge","Noir");

    Mais je me retrouve de nouveau avec "No such file or directory" lorsque j'essaie de l'inclure... pourriez-vous m'aiguiller?
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  2. #2
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    -Pas besoin "d'aider" le compilo si c'est un fichier du projet.
    -On include que les headers.
    -Mettre les headers dans le même répertoire que ceux "livrés" avec le compilo.
    -l'erreur indique NomdeCouleur et dans le code l'enum est déclarée nomCouleur.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Pour la deuxième question à propos de l'enumeration:

    - je pense que tu n'as pas bien compris comment fonctionne les enumerations.
    Une énumération se déclare comme une classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    enum NomEnumeration{
      MEMBRE1,
      MEMBRE2,
      MEMBRE3 = 6,
      MEMBRE4
    };
    Les membres d'une enumeration sont des entiers. Si on ne leur donne pas de valeur, ils prennent membre précédent+1, le premier commençant alors à 0.
    Ensuite on peut utiliser des membres en donnant juste leur nom, ils sont en lecture seul.


    Après, ton idée de forcer l'utilisation d'un de ces noms est bonne, je pense que tu devrais y arriver.


    ATTENTION:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Couleur a=new Couleur("Rouge");
    Ce n'est q'un exemple mais il comporte une erreur. Tu declares une instance de couleur et tu l'initialise avec une adresse d'instance de Couleur.

    Ici il n'est pas nécessaire d'utiliser new:

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Bonsoir,

    #include <Couleur.cpp>
    Les <...> indiquent que le fichier se trouve dans le répertoire lib de ton compilateur.

    #include "Couleur.cpp"
    Les "..." indiquent que le fichier se trouve dans le même répertoire. (Tu peux mettre un chemin complet si tu le désire.)

    Par contre le .cpp doit être compiler à part.
    Dans le main.cpp tu n'inclus que le .h de ta classe.

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par MatRem
    Pour la deuxième question à propos de l'enumeration:

    - je pense que tu n'as pas compris comment fonctionne les enumerations.
    Si bien sur je sais ce qu'est une énumeration. Mais c'est la façon de la déclarer qui me pose probleme. Je pensais que ca pouvais être fait à l'intérieur d'une classe.
    L'interet étant que cette énumération n'esite pas "Hors de la Classe" d'ou l'idée du static.
    Dans mon esprit quand on aurait voulu donné un nomCouleur au constructeur de couleur on lui aurait donné un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Couleur.rouge
    ou Couleur.nomCouleur.rouge
    et pas un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     nomCouleur coul;
    coul="Bleu";
    Couleur a=new Couleur(coul);
    bref la liste de valeur des noms de couleurs n'aurait de sens que liée à la classe couleur... je sais pas si je suis clair la
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  6. #6
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Voici un exemple qui doit interpréter ton idée, si je l'ai bien comprise...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class{
       public:
          enum e_Couleur{
             ROUGE,
             VERT,
             BLEU
          };
     
          Couleur(e_Couleur);
     
       private:
          e_Couleur couleur;
    };

  7. #7
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Pas tout à fait.
    Dans ton exemple, il y a une propriété couleur. Moi je n'en veux pas. L'enumeration couleur ne sert que lorsque l'on souhaite initialiser une couleur à l'aide d'une "couleur standards".
    Dans ce cas la, les propriétés RGB sont fixées à leur valeur qui correspond à cetet couleur standard.
    En revanche, lorsque l'on souhaite créer une couleur "non standard", on passe par un constructeur qui prend les valeurs R G B et il n'y a pas de correspondance poru cette couleur dans l'énumération nomCouleur ( ce qui correspond à la réalité, il n'existe pas un nom par combinaison RGB possible).
    En revanche si ton code suffit alors il me suffit d'enlever

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private:
    e_Couleur;
    et je pourrai créer une couleur standard via :



    Parcequ'au final c'est juste ca que je cherchais ^^

    Pour le H et le CPP j'ai compris mon erreur :
    j'avais fais un unique fichier pour ma classe et pas un header qui déclarait mes fonctions membre, constrcteur et autres, tout était directement implémenter dans un seul et meme fichier, ce qui est bien laid lorsque l'interface devient conséquente
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  8. #8
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    Ha ouias d'accord je savais pas que tu voulais aller si loin.

    Dans ce cas moi j'aurais carément fait ça (d'ailleurs c'est ce que j'utilise ):

    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
    class Color
    {
       public:
          Color(double r=1, double g=1, double b=1);
     
          static const Color WHITE;
          static const Color BLACK;
          static const Color RED;
          static const Color GREEN;
          static const Color BLUE;
     
       private:
          double r;
          double g;
          double b;
    };
    Comme ça RED, GREEN, ... sont directement dex couleurs que tu peux utiliser.

Discussions similaires

  1. [XPATH] [InputSource] No such file or directory
    Par Ricky81 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 26/10/2006, 09h13
  2. conio.h: No such file or directory
    Par débutant_en_C dans le forum C
    Réponses: 3
    Dernier message: 10/08/2006, 18h55
  3. list : no such file or directory :(
    Par Bakura dans le forum C++
    Réponses: 23
    Dernier message: 13/06/2006, 16h30
  4. Réponses: 3
    Dernier message: 16/01/2006, 18h24
  5. Réponses: 1
    Dernier message: 04/10/2005, 20h01

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