我有一堂课
class clsNode
{
private:
vector<clsNode*>m_Daughters;
但是,这个向量将始终只包含 2 个 clsNode 指针。它不应该是动态向量,而是一个固定长度的数组,可以容纳 2 个指向 2 个 clsNode 的指针。
我试过了
vector<clsNode*>m_Daughters[2];
但这引发了很多编译器错误。
有人可以告诉我如何正确地做到这一点吗?
这个定义有问题
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;
};
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; }