c++ - 在 C++11 中继承异常?
问题描述
我有一个类叫Matrix<t>
,我的教授让我写一个异常类:
Matrix::IllegalInitialization
这样它就包含了函数what()
,所以我写了(在 Matrix.h 中):
template<class T>
class Matrix<T>::IllegalInitialization {
public:
std::string what() const {
return "Mtm matrix error: Illegal initialization values";
}
};
但是我有一个问题,这个类不继承异常,如何解决这个问题?
我希望以下工作:
try {
Dimensions dim(0,5);
Matrix<int> mat(dim);
} catch (const mtm::Matrix<int>::IllegalInitialization & e){ cout<< e.what() <<endl;
}
编辑: 我的代码应该是这样的吗?
template<class T>
class Matrix<T>::IllegalInitialization : public std::exception {
public:
const char* what() const override {
return "Mtm matrix error: Illegal initialization values";
}
};
我正进入(状态:
错误:覆盖函数的异常规范比基本版本更宽松
解决方案
的what()
方法std::exception
是(cf cppreference):
virtual const char* what() const noexcept;
您的方法未声明noexcept
,因此它不能覆盖std::exception::what()
。
推荐阅读
- sql - 解析包含名称空间的 XML
- vba - 公式太长且仅适用于一个单元格
- java - 为什么新的 Integer 充当值类型 int?
- javascript - PDF到离子3中的图像
- python - Python 日志行未持久化
- azure - 是否可以使用 ARM 模板配置对 Azure Active Directory 应用程序的 api 权限
- php - 代码创建两个 MySQL 行而不是一个
- typescript - this.nav.getActiveChildNav(...).select 不是函数
- android - 无法编译 play-services-places:15.0.1
- php - 如何在 cake php 3 中的 geo_locations 之间找到 get_distance_in_miles