Comment savoir si un membre n'a pas été initialisé
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:
Code:
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);
}; |
CPP:
Code:
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;
}
|
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.
Merci d'avance !