【发布时间】:2015-01-27 22:47:11
【问题描述】:
我有这个例子:一个矩阵类,矩阵的维数作为模板参数给出。
template <std::size_t DIM>
class Matrix {
// ...
};
int main()
{
Matrix<2> m2;
Matrix<4> m4;
m2 = m4;
}
我的赋值运算符必须看起来像将 m2 的 DIM 从 2 更改为 4 吗?
【问题讨论】:
-
Matrix<2> m2 ();不会实例化矩阵对象。它将声明一个函数。 -
我的示例是我的实际课程的一个非常简单的版本,但在实际课程中,结构如下所示: Table
U ({5,1,10});这行得通!,它测试了它:) 现在我认为 Matrix m2 ();也应该工作 -
@MariusKüpper:推测和幻想从来都不是学习 C++ 的好方法 :-(
-
@MariusKüpper Ridchard 的回答中提出的内联模板应该可以解决问题。
-
您不能更改模板参数,它是类型的静态属性,而不是可以在运行时更改的动态。您可以将
int从值 4 更改为值 3,但不能将其更改为long。同样,您可以更改Matrix<2>的值,但不能将其类型更改为Matrix<4>
标签: c++ templates assignment-operator