C++ 固定数量的向量大小作为类成员
Posted
技术标签:
【中文标题】C++ 固定数量的向量大小作为类成员【英文标题】:C++ fixed number of vector size as class member 【发布时间】: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 谢谢!你能把你的评论作为回复吗?
已经有两个很好的答案了。只接受一个。
【参考方案1】:
这个定义有问题
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;
;
【讨论】:
【参考方案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;
【讨论】:
以上是关于C++ 固定数量的向量大小作为类成员的主要内容,如果未能解决你的问题,请参考以下文章