2016-05-10 6 views
-1

こんにちは私はちょうどそれに慣れるためにループに基づいて範囲をテストしています。このプログラムでは、ユーザーが4つの名前を入力できるようにして、4つのnames.Iを出力します。私はそれを正しくやっていると信じていますが、コンパイルしようとするとコンパイラエラーが発生します。範囲ベースの部分を削除して、私が使用している部分を使用すると、//うまく動作します。基本範囲ベースのループは実行されていませんか?

私のコードに何か問題がありますか?

names.cpp:機能において 'メインINT()':

names.cpp:18:エラー:前予想イニシャライザ ':' トークン

names.cpp:21:エラー:期待プライマリ-expression 'リターン'

names.cpp前:21:エラー:予想 '; '戻り' 前

names.cpp:21:エラー: '戻る' の前に予想一次式

names.cpp:21:エラー:予想「)」「リターン」の前に

#include"iostream" 
    #include"string" 

    using namespace std; 

    int main() 
    { 

    string names[4]; 
    cout<<"input names\n"; 

    for(int i=0;i<4;i++){ 
    cin>>names[i];} 

// The following 2 lines work 
    //for(int i=0; i<4; i++){ 
    //cout<<names[i]<<endl;} 

// the following 2 lines do not work 
    for(string val : names){ 
    cout << val << endl;} 

    return 0;} 
+0

私のためにうまくコンパイル/実行:http://ideone.com/I2DbRN – Sneftel

+0

私は名前を変えてみました:そして私はまだコンパイルできません。 – Jdub87

+5

C++ 11より前のコンパイラ...どのコンパイラとどのバージョンを使用していますか?どの引数があればそれを渡していますか? – Sneftel

答えて

1

あなたが使用しているものコンパイラ&バージョンを教えていなかったが、構文エラーが死んでプレゼントあり!

C++ 11の機能は、遠隔地のforループです。

コンパイラはC++ 03モード(または実際にはC++ 11以前のコンパイラ)です。

最近のGCCの場合は、コマンドラインのg++呼び出しに-std=c++11(well、-std=c++14)を追加してください。

1

6.1より前のgccバージョンを使用する場合は、コンパイラフラグに "-std = C++ 11"を追加する必要があります。

+2

私は、rep-to-commentの壁のポイントは、あなたがサイトが最初にどのように働くかを学んだことが保証されるように、あなたがコメントする前に気づいて覚えておくことを奨励することです。代わりにあなたのコメントを間違った場所に投稿するように促すのではなく、そうしないでください。答えとして掲示されたコメントは単に削除されます。しかし、それが起こると、これはポーズされた質問に対する良い_answerです。私はコメント能力の欠如についてあなたのイントロを取り除いています。 –

+0

@Lightが書いたものに同意します –

関連する問題