sto cercando di seguendo gli esempi in questa pagina:Come usare boost :: error_info correttamente?
http://www.boost.org/doc/libs/1_40_0/libs/exception/doc/motivation.html
Nel momento provo la seguente linea:
throw file_read_error() << errno_code(errno);
ottengo un errore:
error C2440: '<function-style-cast>' : cannot convert from 'int' to 'errno_code'
Come faccio a farlo funzionare?
Idealmente voglio creare qualcosa di simile:
typedef boost::error_info<struct tag_HRESULTErrorInfo, HRESULT> HRESULTErrorInfo;
Ma non può anche ottenere i primi esempi di lavorare.
Edit: Ecco un breve esempio di ciò che genera C2440 di errore per me:
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);
}
Potresti postare un esempio minimale completo che stai cercando di compilare quando ricevi l'errore C2440? –
Visualizza l'esempio sul link. Non ho potuto ottenere 'gettare file_open_error() << errno_code (errno);' per funzionare. –
Aggiunto un esempio. –