Я разрабатываю тонкую управляемую оболочку C ++ для большой неуправляемой библиотеки C ++ и большой библиотеки C #.Мне нужно отлавливать ошибки, возникающие в этой большой неуправляемой библиотеке C ++, и перебрасывать их как исключения Clr.Неуправляемая библиотека генерирует экземпляры следующего класса:
Error::Error(const std::string& file, long line,
const std::string& function,
const std::string& message) {
message_ = boost::shared_ptr<std::string>(new std::string(
format(file, line, function, message)));
}
const char* Error::what() const throw () {
return message_->c_str();
}
До сих пор я придумал это:
try{
// invoke some unmanaged code
}
catch(Object*)
{
throw gcnew System::Exception("something bad happened");
}
Как извлечь сообщение из класса Error и преобразовать его вкласс Clr String, чтобы я мог передать его конструктору gcnew System :: Exception ()?Если неуправляемый код генерирует что-то еще, поймает ли мой блок catch это?