2016-12-06 9 views
0

私のコスト作成ツールの中にboolのベクトルのベクトルを初期化します。クラスベクトルのベクトルを初期化するためのコンストラクタ

これは私のクラスである:

class MyClass{ 
public: 
    MyClass(const OtherClass&g): 
     g(g), count(g.node_count(), std::vector<bool>(16))){} 


private: 
    const OtherClass&g; 
    std::vector<std::vector<bool>>count; 
}; 

が、私はcountを初期化しようとすると、私はこのエラーを取得:

error: no match for call to ‘(std::vector<std::vector<bool> >) (int)’ 
+0

[回避しない](https://isocpp.org/blog/2012/11/on-vectorbool) 'ベクター'はハイブリッドモンスターです。代わりに['std :: bitset <>'](http://en.cppreference.com/w/cpp/utility/bitset)を使うことができます。 – vsoftco

+0

奇妙な理由は、あなたは16 boolが必要であることが分かっている場合にベクトルを使用しますか?なぜ 'const OtherClass&'?このデザインで問題が発生しました。あなたが他のオブジェクト(B)にオブジェクト(A)の参照を与えるとき、このオブジェクト(A)は彼(B)に属するべきです、なぜ 'const'ですか? (多分あなたは彼を修正したくないので、大丈夫です) – Stargateur

答えて

3

あなたはfill constructorを使用したいです。 C++ 11を使用しない場合は、ベクトルの要素のデフォルト値を指定する必要がありますcount(g.node_count(), std::vector<bool>(16, true))

0

まず、vector<bool>が特殊なタイプのベクトルであることがわかっていれば尋ねますいくつかのケースで少し異なる動作を引き起こす可能性があります。

これを使用する場合は、コンストラクタvector<bool>(16, true)に16個のtrue値を入力して渡す必要があります。

関連する問題