C ++固定数量的矢量大小作为类成员

时间:2013-05-26 18:50:14

标签: c++ class vector member

我有一个班级

class clsNode
{
private:
   vector<clsNode*>m_Daughters;

但是,此向量将始终只包含2个clsNode指针。它不应该是动态矢量,而是一个固定长度的数组,可以容纳2个指向2个clsNodes的指针。

我试过

vector<clsNode*>m_Daughters[2];

但是这会引发很多编译错误。

有人可以告诉我如何正确地做到这一点吗?

2 个答案:

答案 0 :(得分:3)

这个定义有问题

vector<clsNode*> m_Daughters[2];

它使m_Daughters成为两个vector<clsNode*>的数组,这远非您的目的。

要设置尺寸,您可以使用其constructor

class clsNode
{
   vector<clsNode*> m_Daughters;
public:
   clsNode() : m_Daughters(2)
   {}
};

如果大小不变,您可以使用std::array

class clsNode
{
   array<clsNode*, 2> m_Daughters;
};

答案 1 :(得分:2)

vector<clsNode*>m_Daughters[2];创建一个包含两个vector<clsNode*>类型元素的数组。要纠正此问题,您可以:

  • 声明向量vector<clsNode*> m_Daughters;并将类的构造函数更改为clsNode() : m_Daughters(2, 0) {} // create a vector holding two objects of type clsNode*

  • 根本不需要矢量,只需编写clsNode* m_Daughters[2];并将构造函数更改为clsNode() { m_Daughters[0] = m_Daughters[1] = 0; }