【问题标题】:Int template in an array/vector/whatever数组/向量/任何内容中的 int 模板
【发布时间】:2016-10-07 01:13:25
【问题描述】:

我需要知道如何创建一个包含类定义的数组/向量:

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

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

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

【问题讨论】:

  • 请重新阅读您的问题,从头开始。当你意识到你的问题的主要问题,以及为什么没有人知道你在说什么时,请解决它。
  • ab????
  • @Eichhörnchen 他正在为他的课程提供示例对象名称,我认为
  • 你说的是顶点和矩阵。你想要一个矩阵向量?然后创建一个Matrix类,然后导入&lt;vector&gt;,最后导入std::vector&lt;Matrix&gt; a;
  • 哦,废话,谢谢。现在修好了。我已经重写了好几次希望让它更清楚,但没有注意到我的原始草稿中留下的措辞错误

标签: c++ arrays templates


【解决方案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);

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

【讨论】:

  • 好的,但正如 OP 告诉我们的那样,他根本不需要模板
  • 我愿意,我在写我的问题时真的搞砸了。我的措辞很糟糕而且含糊不清——我认为现在已经解决了
猜你喜欢
  • 1970-01-01
  • 2012-02-20
  • 2016-04-28
  • 2022-11-15
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
相关资源
最近更新 更多