Код: Выделить всё
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