我有一个班级
class clsNode
{
private:
vector<clsNode*>m_Daughters;
但是,此向量将始终只包含2个clsNode指针。它不应该是动态矢量,而是一个固定长度的数组,可以容纳2个指向2个clsNodes的指针。
我试过
vector<clsNode*>m_Daughters[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; }