2011-08-03 14 views
1

boost::unordered_mapを初期化リストで初期化することはできますか? -Weffc++が必要です。初期化リストを含むBoost :: unordered_map?

コンストラクタ内で何らかの処理をした後にマップを塗りつぶすだけなので、メソッドを初期化することはできません。メソッド内に空のマップを作成して返すこともできますが、それは私にとっては良いアイデアのようには聞こえません。

ポインタを使用してNULLに初期化することもできます。空のメソッドと同等のものを作成するよりも優れていますが、むしろそうはしません。

+0

ここで初期化リストとはどういう意味ですか?デフォルトのコンストラクタを明示的に呼び出さないのはなぜですか? – bdonlan

+0

私はこの理由で 'WeffC++ 'を使用しません。 – GManNickG

+2

"F *** C++"と言っても "礼儀正しい"ようなので、私は '-WeffC++'を使用しません。もちろん、私は言うことはしたくありません。 –

答えて

4

単にデフォルト・構築初期化リスト内のメンバ変数を:

struct S { 
    boost::unordered_map<int, int> m; 

    S() : m() { } 
}; 

これは-Weffc++は黙っせるのに十分です。

+0

これはデフォルトではなく値の初期化です初期化(§8.5/ 7)。: - ] – ildjarn

+0

ありがとうございます(私は本当に_default construct_を意味しましたが、はい、_value initialization_も正解です)。 –

関連する問題