2

クラスがあります

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

ただし、このベクトルには常に 2 つの clsNode ポインターのみが含まれます。動的ベクトルではなく、2 つの clsNode への 2 つのポインターを保持できる固定長の配列にする必要があります。

私は試した

vector<clsNode*>m_Daughters[2];

しかし、それは多くのコンパイルエラーを投げました。

誰かがそれを正しく行う方法を教えてもらえますか?

4

2 に答える 2

3

この定義には問題があります

vector<clsNode*> m_Daughters[2];

目的からかけ離れたm_Daughters2つの配列として作成します。vector<clsNode*>

 

サイズを設定するには、そのコンストラクターを使用できます

class clsNode
{
   vector<clsNode*> m_Daughters;
public:
   clsNode() : m_Daughters(2)
   {}
};

サイズが一定の場合は、次を使用できますstd::array

class clsNode
{
   array<clsNode*, 2> m_Daughters;
};
于 2013-05-26T18:54:54.850 に答える
2

vector<clsNode*>m_Daughters[2];型の 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; }

于 2013-05-26T19:13:46.027 に答える