récupérer un objet de boost :: optionnel
Suppose une méthode retourne quelque chose comme cela
boost::optional<SomeClass> SomeMethod()
{...}
Maintenant, supposons que j'ai quelque chose comme ce
boost::optional<SomeClass> val = SomeMethod();
Maintenant, ma question est comment puis-je extraire SomeClass de val ?
Pour que je puisse faire quelque chose comme ceci:
SomeClass sc = val ?
source d'informationauteur MistyD
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la de-opérateur de référence:
Alternativement, vous pouvez utiliser le
get()
méthode:Ces deux retour une lvalue de référence du sous-jacent
SomeClass
objet.Pour vérifier si la carte contient une valeur, et éventuellement récupérer:
Pour obtenir la valeur facultative, ou une valeur par défaut si elle n'existe pas:
Comme mentionné dans la réponse à la question précédente, la de-opérateur de référence et la fonction
get()
ont la même fonctionnalité. Les deux nécessitent l'option pour contenir des données valides.Une alternative est la fonction
value()
qui lève une exception si l'option de ne pas mener une valeur.Sinon, les fonctions
value_or
etvalue_or_eval
peut être utilisé pour spécifier les valeurs par défaut qui sont retournés dans le cas où la valeur n'est pas définie.