给出以下类别:
#include <iostream>
using std::ostream;
class MatrixException: public std::exception {
public:
virtual ~MatrixException() {
}
virtual const char* what() throw ()const = 0; // error1 , error2
};
class BadDims: public MatrixException {
public:
const char* what() throw ()const override {
return "Bad dimensions";
}
};
有人可以解释我为什么会出现以下错误吗?
预期为';'在成员声明结尾
期望的'unqualified-id'在'='tokenov之前
答案 0 :(得分:0)
@VTT和其他人说的话,但是std::exception::what
被声明为noexcept
,所以您不应该承诺/威胁要首先扔东西。
因此,代码应如下所示(经过一些整理)
#include <exception>
class MatrixException : public std::exception {
public:
virtual ~MatrixException() { }
virtual const char* what() const noexcept = 0;
};
class BadDims : public MatrixException {
public:
const char* what() const noexcept override { return "Bad dimensions"; }
};
让我感到困惑的是,为什么OP的代码完全可以编译。也许年龄更大(如果可能的话)和睿智(错误,同上)的人可以向我解释。