Я написал собственный класс исключений для обработки ошибок автоматизации OLE.Метод what () выглядит следующим образом:
const char* OleException::what() const throw() {
std::string res = std::runtime_error::what();
LPTSTR errorText = NULL;
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
hresult,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&errorText,
0,
NULL);
if(NULL != errorText) {
res = res + " - " + errorText;
LocalFree(errorText);
}
//std::cout << res << std::endl;
return res.c_str();
}
Однако, когда я пытаюсь напечатать строку, она возвращается в моей функции main (), все, что я получаю, это буква «I».Странная часть: когда я раскомментирую вторую строку метода, он работает просто отлично, т.е. я получаю одно и то же сообщение дважды на своем терминале.Что я делаю не так?