C++におけるクラスメンバー変数の初期化問題

2282 ワード

C++11以降は非静的メンバー変数の初期化(in-class initialization)が許可されるが、非fundamental(非基本データ)タイプではinitializer_listを用いて実現する必要がある
 
次のコードは間違っています.
class A{
public:
int x=1;

string s="qweqetfqw";
vector<int>p(1,0);//    ,vector        ,         
};

次のように変更すると正しいです.
class A{
public:
     int x=1;
     string s="qweqetfqw";
     vector<int> p{0};//         
};

または、
class A{
public:
     int x=1;
     string s="qweqetfqw";
     vector<int> p={0};//          
};