2013-05-26 66 views
1

的固定數量的我有一個類C++矢量大小爲類成員

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

然而,這種載體將始終僅包含2 clsNode指針。它不應該是動態矢量,而應該是一個固定長度的數組,可以容納2個指向2個clsNodes的指針。

我試圖

vector<clsNode*>m_Daughters[2]; 

但是,扔了很多編譯器錯誤。

有人能告訴我如何正確地做到這一點?

+2

爲什麼用矢量呢?爲什麼不'clsNode * m_Daughters [2]'? – mwerschy

+0

@mwerschy謝謝!你能評論你的回覆嗎? – user2421725

+1

已經有兩個很好的答案。只要接受一個。 – 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; 
}; 
1

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; }