【问题标题】:C++ fixed number of vector size as class memberC++ 固定数量的向量大小作为类成员
【发布时间】:2013-05-26 18:50:13
【问题描述】:

我有课

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

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

我试过了

vector<clsNode*>m_Daughters[2];

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

谁能告诉我如何正确地做到这一点?

【问题讨论】:

  • 那为什么要使用向量呢?为什么不clsNode* m_Daughters[2]
  • @mwerschy 谢谢!你能把你的评论作为回复吗?
  • 已经有两个很好的答案了。只接受一个。

标签: c++ class vector member


【解决方案1】:

这个定义有问题

vector<clsNode*> m_Daughters[2];

它使m_Daughters 成为两个vector&lt;clsNode*&gt; 的数组,这与您的目的相去甚远。

 

要设置大小,可以使用它的constructor

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

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

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

【讨论】:

    【解决方案2】:

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

    • 声明向量vector&lt;clsNode*&gt; 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; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多