Делая проект, я пытаюсь создать заголовок HandleError с кучей классов. Внутри моего класса BadNumber
у меня есть метод / функция publi c, которая принимает в качестве строки type
и num
. Однако, когда я пытаюсь проверить это, я получаю сообщение об ошибке exception specification of overriding function is more lax than base version
, потому что я наследую его от public std::exception
. Я гуглил, как это исправить, и я рекомендую сделать вызов noexcept override в моем what()
для этого вызова исключения ( ссылка здесь ). Пример почти идентичен моему с тем же сообщением об ошибке.
Код (компилируется с GCC / Clang c ++ 11):
#include <exception>
#include <string>
class BadNumber : public std::exception
{
private:
std::string _msg;
public:
BadNumber(std::string type, std::string num) : _msg(num + "is invalid type for " + type) {}
const char *what() const noexcept override
{
return (_msg.c_str());
}
};
Сообщение об ошибке:
src/../inc/HandleError.hpp:23:15: error: exception specification of overriding function is more lax than base version
const char *what() const noexcept override
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/exception:102:25: note: overridden virtual function is here
virtual const char* what() const _NOEXCEPT;
Я сделал то, что было задано, и провел некоторое исследование , но все же не повезло и все еще делает больше. Ваша помощь очень ценится, и всегда будет полезно получить некоторую обратную связь и по возможности конструктивно. Спасибо за ваше время и терпение :)