Спецификация исключений в более широком виде для переоценки виртуальной функции [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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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