2

コンパイル時にこのエラーが発生します(g ++ 4.4.6):

main.cpp: In function ‘int main()’:
main.cpp:27: error: expected initializer before ‘:’ token
main.cpp:33: error: expected primary-expression before ‘for’
main.cpp:33: error: expected ‘;’ before ‘for’
main.cpp:33: error: expected primary-expression before ‘for’
main.cpp:33: error: expected ‘)’ before ‘for’
main.cpp:33: error: expected initializer before ‘:’ token
main.cpp:36: error: could not convert ‘((list != 0u) ? (list->SortedList::~SortedList(), operator delete(((void*)list))) : 0)’ to ‘bool’
main.cpp:37: error: expected primary-expression before ‘return’
main.cpp:37: error: expected ‘)’ before ‘return’

私のコードは次のとおりです。

#include <iostream>
#include "Student.h"
#include "SortedList.h"

using namespace std;

int main() {
    SortedList *list = new SortedList();

    Student create[100];
    int num = 100000;

    for (Student &x : create) { // <--Line 27
        x = new Student(num);
        num += 10;
    }

    for (Student &x : create)
    list->insert(&x);

    delete list;
    return 0;
}

エラーの原因を知っている可能性のある人は誰でも大いに役立ちます。また、StudentとSortedListは、.hファイルで宣言されているオブジェクトです。

4

1 に答える 1

6

GCCのWebサイトのこのページによると、範囲ベースのforはg ++ 4.6以降でのみ使用可能であるため、コードを通常のforループに変換するstd::for_eachか、何かを使用するか、コンパイラーをアップグレードする必要があります。

于 2012-04-11T22:46:52.993 に答える