Int模板中的数组/向量/其他类型

Int template in an array/vector/whatever

本文关键字:向量 其他 类型 数组 Int      更新时间:2023-10-16

我需要知道如何创建一个数组/矢量包含类定义有点像:

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

其中rowscolumns在向量中可能随项目的不同而变化。由于模板发生了变化,vector将它们视为不同的类型,因此无法工作。

顺便说一句,我选择了这种格式,因为许多与矩阵的操作要求行数和列数相同,模板使检查它更容易。

你可以试试这样

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