运算符重载以显示无效输入的错误

时间:2013-07-05 17:31:36

标签: c++ matrix error-handling operator-overloading

我正在为我正在编写的矩阵类重载加法和减法运算符。如果有人试图添加两个不同维度的矩阵,有没有办法让我显示错误,比如你试试int a = a + b;其中b是int类型以外的其他类型,它会直接给我错误,有没有办法对我的班级这样做?如果没有,有什么办法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果这不是模板,不! 编译器会在编译时识别出编译时编译时可以检测到的编译时间错误,因此如果在运行时识别矩阵的维度,编译器就无法了解它的任何内容,您必须使用异常或类似的东西识别错误。但是如果矩阵的维度将通过模板参数识别,编译器可以知道它们并在编译时生成错误,但是使用这种方法,您无法在运行时从用户那里获得维度。

答案 1 :(得分:0)

如果矩阵的大小是在编译时设置的,例如非类型模板参数,那么oeprator的striaghtforward模板实现会自动检测到这种不匹配的错误。

但是,如果矩阵的大小是在运行时通过构造函数或其他方式设置的,则可能无法在编译时检测到(除非整个大小调用链中涉及很多constexpr) 。在这种情况下,您可以做的最好的是大小匹配的运行时断言。