的固定數量的我有一個類C++矢量大小爲類成員
class clsNode
{
private:
vector<clsNode*>m_Daughters;
然而,這種載體將始終僅包含2 clsNode指針。它不應該是動態矢量,而應該是一個固定長度的數組,可以容納2個指向2個clsNodes的指針。
我試圖
vector<clsNode*>m_Daughters[2];
但是,扔了很多編譯器錯誤。
有人能告訴我如何正確地做到這一點?
的固定數量的我有一個類C++矢量大小爲類成員
class clsNode
{
private:
vector<clsNode*>m_Daughters;
然而,這種載體將始終僅包含2 clsNode指針。它不應該是動態矢量,而應該是一個固定長度的數組,可以容納2個指向2個clsNodes的指針。
我試圖
vector<clsNode*>m_Daughters[2];
但是,扔了很多編譯器錯誤。
有人能告訴我如何正確地做到這一點?
這一定義有問題
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;
};
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; }
爲什麼用矢量呢?爲什麼不'clsNode * m_Daughters [2]'? – mwerschy
@mwerschy謝謝!你能評論你的回覆嗎? – user2421725
已經有兩個很好的答案。只要接受一個。 – mwerschy