Bonjour. Dans une de mes classes, j'utilise une union pour me permettre d'avoir un type variable dans une std::pair. J'aimerais cependant savoir s'il est possible de vérifier que le membre appelé contient bien une valeur. Est-ce possible ?
Voilà le contexte:
Header:
CPP:
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 class private: union UAllowedValues{ char* text; int integer; bool boolean; }; std::map<std::string, std::pair<UAllowedValues, bool> > _couples; // key - [ value + readOnly ] public: std::string getStringValue(const std::string &key); int getIntValue(const std::string &key); bool getBoolValue(const std::string &key); };
L'idée serait de lancer une exception si on fait appel à getIntValue alors que la valeur de la clé est de type string par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 1
2
3
4
5
6
7
8
9
10
11
12
13// J'ai omis volontairement la vérification de l'existence de la clé. std::string Preferences::getStringValue(const std::string &key) { return std::string(_couples.find(key)->second.first.text); } int Preferences::getIntValue(const std::string &key) { return _couples.find(key)->second.first.integer; } bool Preferences::getBoolValue(const std::string &key) { return _couples.find(key)->second.first.boolean; }
Merci d'avance !
		
		
        




   



  Répondre avec citation

 
 
 
 
 
 
  
 
				
 Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.


Partager