我需要知道如何创建一个包含类似于以下类的类的数组/向量:
template<unsigned int rows, unsigned int columns>
class Matrix
{
......
};
rows
和columns
的位置可能因向量中的项目而异。
由于模板发生了变化,因此矢量将它们视为不同的类型,因此它不起作用。
顺便说一句,我之所以选择这种格式,是因为许多矩阵运算都要求行数和列数相同,模板可以更容易地检查它。
答案 0 :(得分:1)
您可以尝试这样的事情
class MatrixBase
{
public:
virtual ~MatrixBase() {}
virtual int getrow() = 0;
virtual int getcol() = 0;
};
template<unsigned int row, unsigned int column>
class Matrix : public MatrixBase
{
public:
virtual int getrow()
{
return row;
}
virtual int getcol()
{
return column;
}
};
Matrix<4, 4> m1;
Matrix<3, 3> m2;
Matrix<2, 2> m3;
vector<MatrixBase*> v;
v.push_back(&m1);
v.push_back(&m2);
v.push_back(&m3);
这不是你想要改变设计的选择。