Comment utiliser boost::error_info correctement?
Je suis en train de suivre les exemples sur cette page:
http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html
La minute, j'ai essayer la ligne suivante:
throw file_read_error() << errno_code(errno);
J'obtiens une erreur:
error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
Comment puis-je obtenir que cela fonctionne??
Idéalement je veux créer quelque chose comme ceci:
typedef boost::error_info<struct tag_HRESULTErrorInfo, HRESULT> HRESULTErrorInfo;
Mais je ne peux même pas obtenir les premiers exemples de travailler.
Edit: Voici un bref exemple de ce que génère l'erreur C2440 pour moi:
struct exception_base: virtual std::exception, virtual boost::exception { };
struct io_error: virtual exception_base { };
struct file_read_error: virtual io_error { };
typedef boost::error_info<struct tag_errno_code,int> errno_code;
void foo()
{
//error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
throw file_read_error() << errno_code(errno);
}
- Pourriez-vous poster une complète minimale de l'exemple que vous essayez de compiler lors de l'obtention de la C2440 erreur?
- Afficher l'exemple sur le lien. Je ne pouvais pas obtenir
throw file_open_error() << errno_code(errno);
de travail. - Ajout d'un exemple.
- Pour ceux qui rencontrent ce: la "motivation" de la page dans l'élan Exception docs est incomplet -- un meilleur exemple est ici: boost.org/doc/libs/1_56_0/libs/exception/doc/..., où ils énumèrent les corriger en-têtes.
Vous devez vous connecter pour publier un commentaire.
produit
Sam Miller m'a donné une idée de ce qu'était le problème. J'ai juste besoin de comprendre:
#include <boost/exception/all.hpp>
Merci pour vos réponses.
essayer:
encore mieux:
Votre HRESULTErrorInfo exemple semble correct.