数组/向量中的Int模板/无论如何

时间:2016-10-07 01:13:25

标签: c++ arrays templates

我需要知道如何创建一个包含类似于以下类的类的数组/向量:

template<unsigned int rows, unsigned int columns> 
class Matrix
{
     ......
};

rowscolumns的位置可能因向量中的项目而异。 由于模板发生了变化,因此矢量将它们视为不同的类型,因此它不起作用。

顺便说一句,我之所以选择这种格式,是因为许多矩阵运算都要求行数和列数相同,模板可以更容易地检查它。

1 个答案:

答案 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);

这不是你想要改变设计的选择。