Microsoft は、初期化リストを使用して構成する C++11 の優れた機能をサポートしないためstd::vector
、残念ながら、VS コンパイラで使用するために一部のコードをリファクタリングする必要があります。
私が考えることができる最善の方法は、配列ポインターと長さコンストラクターを使用することですvector
。以前はこれを行っていました:
MyClass(std::initializer_list<T> init):myStdVector(init){
これにより、次のような素晴らしいことができました。
MyClass hi({1,2,3,4});
私が適切だと思った可変数のアイテムで。
配列を直接渡すことで、どうすれば同じエレガンスを実現できますか? 関数パラメータ内で実際に配列を初期化することは可能ですか?
私はこれを行うことができます:
MyClass(T*initArray,int arraySize):myStdVector(initArray,initArray+arraySize){
しかし、私はこれをしなければなりません:
int whatever[4]={1,2,3,4};
MyClass hi(whatever,4);
不格好なようです。おそらく、より良い解決策がありませんか?