|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Problème d'Enum [ Divers / Général ] (BaptX)
Informations & options pour cette discussion
mercredi 27 décembre 2006 à 17:40:34 |
Problème d'Enum

BaptX
|
Bonsoir à tous, Voilà j'ai un petit problème. J'ai fais un couple .c/.h de fonctions génériques que je vais sans doute réutiliser dans plusieurs programmes. Néanmoins, ces fonctions retournent un type enum que j'ai crée qui s'appelle enCodeRetour (qui me permet de détecter le type d'erreur que me donne ma fonction). Néanmoins, je vais réutiliser cet enum dans mon programme et donc fatalement je vais ajouter des codes erreur qui ne sont pas définis à l'avance. Donc mon enum est définie dans mon programme, et non pas dans le couple .h. J'aurai voulu savoir si il y avait une solution pour éviter d'inclure le typedef enum dans mon .h sans qu'il me fasse une erreur du type 'type non définie' ou 'type déclaré deux fois'. Ci-dessous un exemple, pour que vous compreniez mieux : fichier1.h #include "fichier2.h" typedef enum enCodeRetour { OK, } enCodeRetour; fichier2.h enCodeRetour function1(); enCodeRetour function2(); fichier1.c intègre mon programme est l'appel à mes fonctions de fichier2.h fichier2.c est inclu dans mon projet ------------------------------- En gros, pour utiliser les fonctions du fichier2.h, le compilateur me dit qu'il faut que je définisse mon enum enCodeRetour (donc dans fichier2.h). Mais le problème est que mon enum est définie dans fichier1.h et que si je le définie deux fois, le compilateur va gueuler. Mais si je le définie dans fichier2.h, je ne pourrai pas ajouer de valeurs dans fichier1.h (si j'ai bien compris). Et dans l'absolu je ne sais pas les codes erreurs que je rajouterai, donc je ne peux les définir à l'avance. Il y aurai bien la possibilité de créer deux enum, mais après ça serait le bazar par rapport à mon switch case qui gère les erreurs. Quelqu'un aurait-il une solution ? Existe-il une solution pour que deux enum soient compatible entre eux ? Est-il possible de faire passer mon enum de fichier1.h dans fichier2.h ?
|
|
|
mercredi 27 décembre 2006 à 17:50:31 |
Re : Problème d'Enum

pepsidrinker
|
Je ne suis pas sur d'avoir tout bien compris, mais si je peut me permettre, tu n'a pas a redefinir l'enum 2 fois. Une fois l'enum defini dans ton .h, ne fais que inclure ce ".h" dans lekelle lenum est definit et tu pourra lutiliser. Pepsidrinker
exemple : (ficher1.h): enum Rien {BOB,GEORGE};
( fichier1.cpp) #include "fichier1.h" int main() { Rien monEnum; nomEnum = BOB; }
voila, jespere t'avoir aider.
|
|
|
mercredi 27 décembre 2006 à 18:01:24 |
Re : Problème d'Enum

BaptX
|
Mon problème est que je fais appel à des fonctions qui ne sont pas dans fichier1.cpp mais dans fichier2.cpp. Or, pour suivre ton exemple, c'est comme si j'avais: fichier2.cpp
Rien haha (int hoho) { // mon programme return haha; }
fichier2.h
Rien haha (int hoho);
Le problème est que j'inclue mon couple fichier2 dans fichier1 mais que l'enum est créé dans fichier1. Et donc du coup le compilateur me sort une erreur comme quoi l'enum est pas créé. Exactement il dit: [C++ Erreur] generik.h(17): E2238 Déclaration multiple pour 'enCodeRetour' [C++ Erreur] generik.h(15): E2344 Déclaration plus récente de 'enCodeRetour'
|
|
|
mercredi 27 décembre 2006 à 18:05:27 |
Re : Problème d'Enum

BaptX
|
Voici mes sources exactes, ca vous parlera ptète mieux: fichier1.h
#include <Dialogs.hpp> #include <stdio.h> #include <string.h> #include <time.h> #include <dir.h> #include "C:\Documents and Settings\ABM\Bureau\Baptiste\Convertisseur\Fonctions génériques\generik.h" #define MAX_SIZE 200 //--------------------------------------------------------------------------- typedef enum enCodeRetour { OK, ER_fopen, ER_copyfile, ER_genopenf, ER_cliopenf, ER_samelib, ER_noequal, ER_nolib, ER_char, ER_nogui, ER_nullstruct, ER_nbarg, ER_modif, ER_choix, ER_write, ER_genempty, ER_cliempty, ER_client, ER_gen13, ER_genchar, } enCodeRetour;
fichier generik.h
//--------------------------------------------------------------------------- #ifndef generikH #define generikH //--------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dir.h> #include <time.h> #include <conio.h> #define MAX_SIZE 200 //--------------------------------------------------------------------------- // enum struct //--------------------------------------------------------------------------- enCodeRetour enCrCopyfile (unsigned char *aucSource, unsigned char *aucDest, unsigned char *aucErreur); enCodeRetour enCrangefiles (unsigned char *aucPath, unsigned char *aucName, unsigned char *aucExt, unsigned char *aucErreur); enCodeRetour enCrIngecrypt (unsigned char *aucPathExe, unsigned char *aucPath, unsigned char *aucName, unsigned char *aucExt); //--------------------------------------------------------------------------- #endif
|
|
|
mercredi 27 décembre 2006 à 18:07:11 |
Re : Problème d'Enum

pepsidrinker
|
envois la source des ton prog au complet svp Pepsidrinker
|
|
|
mercredi 27 décembre 2006 à 18:56:00 |
Re : Problème d'Enum

MuPuF
|
hello, laisse tomber les enums, retourne un int. Et pour que ce soit facile à utiliser, met des defines dans ton programme, comme ça, c'est générique et adaptable, jamais compris l'interet des énums de toute facon ... /* MuPuF®
|
|
|
mercredi 27 décembre 2006 à 19:41:58 |
Re : Problème d'Enum

yann_lo_san
|
Il faut simplement que tu mettes l'enum dans generic.h au lieu de fichier 1. tu l'auras aussi puisque tu fais l'inclusion à ralonge (generic.h) dans fichier1
De plus fichier 1 n'est pas encadré de #ifndef ect...
On peut voir les enum comme des : static const int OK = 0; static const int ERR1 = 1; static const int ERR2 = 2;
|
|
|
mercredi 27 décembre 2006 à 19:44:06 |
Re : Problème d'Enum

yann_lo_san
|
Pour mupuf : une enum est plutot encapsulée dans une struct, ou elle sera vu comme un type intégrée a la struct, impossible à faire avec des #define.
|
|
|
jeudi 28 décembre 2006 à 09:41:17 |
Re : Problème d'Enum

BaptX
|
Réponse acceptée !
En fait mon problème c'était que je ne voulais pas toucher à fichier2.h et comme mon enum pouvait changer en fonction du programme que je faisais (en fonction du programme, il n'y a pas le même nombre d'erreurs), la solution la plus simple est de faire mon enum dans un troisième fichier .h inclue dans fichier2.h. En effet, je ne peux pas créer mon enum dans fichier1.h car fichier2.h est appelé avant et ça crée un problème au niveau des entêtes de fonctions ET je ne veux pas modifier fichier2.h à chaque fois que je fais un nouveau programme. La seule solution consiste donc à ajouter un troisième .h en l'appelant dans le deuxième.
|
|
|
Cette discussion est classé dans : type, enum, définie, fichier2, encoderetour
Répondre à ce message
Sujets en rapport avec ce message
Comment récupérer une valeur définie par __int64 ? [ par Weedy_59 ]
Voici mon problème, je voulais acquérir la taille d'un fichier de + 4Go donc j'ai demandé une aide car a cause du type 'unsigned long' j'étais limité
sérialisation d'un bool ou un type enum [ par iznogoud ]
Bonjour,J'ai un petit problème lorsque j'utilise ma fonction serialize. Je suis incapble de rentrer des types bool ou des types que j'ai créer. Je sai
Nombre aléatoire de type Double [ par BRAUKRIS ]
Impossible de génère un nombre aléatoire à virgule.J?ai utilisé la fonction rand mais elle me renvoie toujours un nombre entier.Comment doit-je faire
Type de fenêtre + Gestion des touches + Réduction de la fenêtre [ par CyberP ]
1.Lorsque l'on créé un élément pour son programme, comme une barre de status ou une zone de texte éditable, on utilise une fonction avec le type d'élé
Récupération de varaiables dans un fichier txt [ par jujunio ]
Mon pb est le suivant :Je n'arrive pas à récupérer les valeurs de variables déclarées dans un fichier txt.voici le fichier .txt dont je veux récupérer
récupération de variables dans un fichier .txt [ par jujunio ]
Voici mon pb. Je voudrais récupérer des valeurs de variables qui sont dans un fichier .txt et je ne sais pas du tout comment faire?voici le fichier .t
template [ par dam1234 ]
G un probleme avec une methode de classe declaree en template. J'aurai besoin de savoir comment est ce que l'on fait pour connaitre quel a été le type
Gestion d'accès par carte à puce [ par Midikits ]
Bonjour à tous!J'ais un projet de gestion d'accès par carte à puce à developper avec une base de données sous access et un programme en c++ pour faire
type de donnée inconnu [ par jeffise57 ]
dans une fonction developper par une autre personne j'ai un type char** trucmuche, cette variable est un buffer qui doit recevoir le résultat qu'est c
aidez moi svp [ par asnow ]
Q'un aurait-il la gentillesse de me traduire ce code, en algorithme. merci d'avance.int i=0;int x=random(10);int y=random(10);int type_pos=random(2);i
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Magic
Entre 429€ et 429€
|