0

なぜこれを行うことができるのかわかりません:

int numbers[] = {-4,3,0,100,2000};
Set d(5,numbers);

しかし、これを行おうとすると次のエラーが発生します。

Set d(5,{-4,3,0,100,2000});
Error:
warning: extended initializer lists only available with -std=c++0x
         or -std=gnu++0x|
error: no matching function for call to
         'Set::Set(int, <brace-enclosed initializer list>)'

コンストラクタ:

Set::Set(int size, const int constSet[])

ご協力いただきありがとうございます

4

2 に答える 2

3

これはC++03では許可されていませんが、最新の標準C++11では許可されています。

これを参照してください: https: //en.wikipedia.org/wiki/C%2B%2B11#Initializer_listsまたはこれ: https ://www2.research.att.com/~bs/C++0xFAQ.html#init-list

ちなみに、コンストラクターは実際には配列ではなくポインターを使用しています。

于 2012-05-15T05:10:54.237 に答える
0

新しいバージョンの C++ を使用しているため、このコードをコンパイルするときは、次のようにしてください。 g++ -std=c++0x sample.cpp -o sample

-std=c++0x新しいバージョンの c++ を使用している場合は重要です。

于 2012-05-15T05:25:33.443 に答える