je cherche comment declarer un type en c++ comme l'exemple suivant:
type fruits={pomme,banane,orange}
note:j'ai pas pu avec enum parce que elle travail que avec des entiers et n'utilise pas les chaines de caracteres
je cherche comment declarer un type en c++ comme l'exemple suivant:
type fruits={pomme,banane,orange}
note:j'ai pas pu avec enum parce que elle travail que avec des entiers et n'utilise pas les chaines de caracteres
Pourquoi ça ne te va pas
As-tu réellement besoin d'une chaîne de caractères ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part enum Fruit {POMME, BANANE, ORANGE}
Salut,
Il faut savoir que, en C++, on trouve différents types, qui se déclinent en deux grandes catégories:
- les types primitifs (fournis par le langage, en dehors de toute bibliothèques), à savoir:
- (unsigned) char
- (unsigned) short (int)
- (unsigned) int
- (unsigned) long (int)
- parfois(unsigned) long long
- float
- double
- parfois double double
- les types définis par l'utilisateur, qui regroupent
- les unions
- les structures
- les classes
- les énumérations
- les définition ("alias") de type (typedef)
Dés lors, le seul type qui sera réellement en mesure de contenir "pomme","poire","peche" ou "kiwi"... ce sera une chaine de caractère.
Tu peux, bien sur, envisager d'utiliser cette chaine de caractères comme une clé (pour un std::set ou pour une std::map), mais il te restera, de toutes facons... à créer le type correspondant
De prime abord, je vois donc deux possibilités pour résoudre ton problème:
tu définis une classe mere "fruit" du genre de
dont tu fais dériver les différents fruits que tu veux utiliser, sous la forme de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Fruit { public: const std::string& monNom() const {return nom;} bool jeSuisUn(const std::string fn){return nom==fn;} virtual ~Fruit(); protected: Fruit(const std::string& nom):nom(nom){} private: std::string nom; };
et que tu pourrais utiliser sous une forme proche de
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 class Banane:public Fruit { public: Banane():Fruit("banane"){} }; class Kiwi:public Fruit { public: Kiwi():Fruit("kiwi"){} }; class Pomme:public Fruit { public: Pomme():Fruit("pomme"){} }; /*...*/
ou alors, tu travailles sur base d'une énumération et d'un tableau static de chaines de caractères constantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void mafonct() { std::vector<Fruit*> tabfruit; tabfruit.push_back(new Banane); tabfruit.push_back(new Kiwi); tabfruit.push_back(new Pomme); /*...*/ for(size_t i=0;i<tabfruit.size();i++) std::cout<<"le fruit "<< i+1<<" est "<<tabfruit[i].monNom()<<sd::endl }
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 enum efruit { POMME, POIRE, PECHE, KIWI, ORANGE, BANANE /*...*/ }; class Fruit { public: Fruit(efruit what):what(what){} const std::string& monNom(){return word[(int)what];} boole Je suis(const std::string& name){return word[(int)what]==nom;} private: efruit what; static const std::string word[6];//nombre à adapter selon tes besoins ;) }; const std::string Fruit::word[6]={"pomme","poire","peche","kiwi","organge","banane"};
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
Partager