2017-02-02 14 views
0

私は構造体が2つのメンバー変数のみを持っています。クラス内のすべてのdoubleを0に初期化する

struct foo { double a, b, c; }; 

別のクラスは、初期化子リストでstd::vector<foo>::vector(size_t)コンストラクタを呼び出しstd::vector<foo> v部材を有します。私がやりたいのは何

は、その中のすべてのダブルスは、私がfooに複数の変数を追加する必要が維持

foo(): a(0), b(0), c(0) { } 

を記述することなく、ゼロに初期化されるようにfooのデフォルトコンストラクタを記述していますそれらはすべて別の目的を果たすので、std::array<double>のようなコンテナの要素にすることは意味がありません。

+0

あなたは 'のmemset()' – Slava

+0

複製を使用することができます? [C++構造体の値をすべてのPODメンバ変数を初期化する方法はありますか?](http://stackoverflow.com/questions/3930841/is-there-a-way-to-make-ac-struct-value- initialize-all-pod-member-variables) –

+1

@Dan、たぶん一般的な文脈ですが、私はdoubleの周りにdefault-initialized-to-zeroラッパーを書くのを避けようとしていました。 – SU3

答えて

7

あなたがC++ 14として、これをタグ付けしましたので、あなたは、コンストラクタでそれらを初期化することなく、このようなメンバ変数を初期化することができます:POD用

struct foo { 
    double a = 0.0; 
    double b = 0.0; 
    double c = 0.0; 
}; 
+0

ありがとう!私はこれが静的constメンバにしか許されていなかったという印象を受けました。 – SU3

+0

@ SU3しかしこれは必要ではないかもしれないことに注意してください。 – juanchopanza

+1

これは実際にはC++ 11 – ZivS

関連する問題