2

我有一堂课

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

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

我试过了

vector<clsNode*>m_Daughters[2];

但这引发了很多编译器错误。

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

4

2 回答 2

3

这个定义有问题

vector<clsNode*> m_Daughters[2];

m_Daughters是一个由两个组成的数组,vector<clsNode*>这与您的目的相去甚远。

 

要设置大小,可以使用它的构造函数

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

如果大小是恒定的,您可以使用std::array

class clsNode
{
   array<clsNode*, 2> m_Daughters;
};
于 2013-05-26T18:54:54.850 回答
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; }

于 2013-05-26T19:13:46.027 回答