Предупреждение, с которым вы сталкиваетесь, связано с тем, что вы используете C ++ 14, если вы скомпилируете с C ++ 17, это станет ошибкой.Следовательно, я бы не рекомендовал игнорировать его.
Что происходит?
std::exception
определяет метод what
как: virtual const char* what() const noexcept;
.Вы наследуете от этого метода и повторно реализуете его без указания noexcept
.В результате вы говорите, что ваша реализация может генерировать исключения, в то время как базовый метод указывает, что это никогда не должно генерироваться.(И вызывающие абоненты примут это так)
Это было исправлено в C ++ 17, что сделало noexcept
частью системы типов, и требует от вас исправить этот код:
const char *what() const noexcept override