2012-11-23 93 views
0

我有作业,我的老师告诉我们要创建一个包含模板的矩阵类。 一个规范是,如果您尝试乘以两个尺寸错误的矩阵,如Matrix1 [100] [20]和Matrix2 [20] [101],则编译器需要生成错误而不是运行时。矩阵模板类*操作符必须生成错误

,因为我无法想象,编译器将如何弄清楚,我还没有开始作业的这个部分。

对不起,如果这是一个虚拟的问题。

Thanks ppl。

+5

提示:模板参数不必是类型。他们可以是数字。 –

+0

我们需要更多地了解您在这里的含义,矩阵模板实际上是什么样子,尝试发布一个简短而完整的示例 – jozefg

+0

您是否已经了解了实际的模板? – Omnifarious

回答

4

矩阵的大小必须是类型系统的一部分,这意味着维必须作为模板参数传递。即,Matrx<100, 20>是一种特定的类型。

现在,当你重载operator*(),你可以用一对模板参数接受同样大小的矩阵仅在参数表中,像(Matrix<N, M> a, Matrix<N, M> b)

+1

除了尺寸应在其中一个矩阵上翻转外。 – juanchopanza

+1

@juanchopanza我实际上不确定OP是否想要线性代数乘法或逐元素乘法。这个问题似乎表明,大小为100 * 20和20 * 101的矩阵不能相乘。 – chrisaycock

+1

简单,清晰,完美...今天我学到了新东西 – Lefsler

相关问题