0

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

4

2 回答 2

0

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

于 2013-07-05T17:37:16.527 回答
0

如果您的矩阵的大小是在编译时通过例如非类型模板参数设置的,那么操作符的简单模板实现将自动检测此类不匹配并出错。

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

于 2013-07-05T17:37:30.147 回答