Спецификация исключений в более широком виде для переоценки виртуальной функции [Duplicate]C++

Программы на C++. Форум разработчиков
Anonymous
Спецификация исключений в более широком виде для переоценки виртуальной функции [Duplicate]

Сообщение Anonymous »

У меня есть класс матрицы шаблона: < /p>

Код: Выделить всё

template 
class Matrix{};
< /code>
Внутри объявления класса я написал класс исключений, основанный на std :: exection: < /p>
class MatrixException: public std::exception
{
private:
const char* errmsg;
public:
MatrixException(const char* msg="")
:errmsg(msg) {}
const char* what() const {return errmsg;}
};

class IllegalOperation: public MatrixException
{
public:
IllegalOperation(const char* msg="")
: MatrixException(msg) {}
};
< /code>
Я попытался использовать его на одной из функций класса, int в имплантационную часть, например: < /p>
template 
Matrix& Matrix::operator=(const Matrix& mat)
{
if (condition)
{throw IllegalOperation("Matrices sizes don't match");}
// other stuff
return *this;
}
< /code>
И я получаю это сообщение об ошибке:
looser exception specification on overriding virtual function 'const char* Matrix::MatrixException::what() const [with T = int; int row = 3; int col = 3]'|

Что я сделал неправильно? Хотя я сам попытался найти подобный вопрос.
Я изменил линию < /p>
const char* what() const {return errmsg;}< /code>
to < /p>
const char *what() const noexcept {return errmsg;}< /code>
и это было в порядке.
спасибо, кто бы ни ставил ссылки! < /p>

Подробнее здесь: https://stackoverflow.com/questions/761 ... l-function

Вернуться в «C++»