Ich erhalte diesen Fehler während der Kompilierung (g ++ 4.4.6):C++ fehlt Initializer Fehler
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’
Mein Code ist wie folgt:
#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;
}
Wer möglicherweise die Quelle der weiß, Fehler wäre eine große Hilfe. Außerdem sind Student und SortedList Objekte, die in ihren .h-Dateien deklariert sind.
Kompilieren Sie mit '-std = C++ 0x'? – ildjarn
Ich bin etwas neu in C++ also, wenn Sie erklären könnten, was -std = C++ 0x tut oder bedeutet, dass würde sehr geschätzt –
@PatMurray: Entfernungsbasierte für Schleifen (Ihre Zeile 27) sind eine C++ 11-Funktion . Sie müssen "-std = C++ 0x" oder (-std = c + 11 in neueren Versionen) an den Compiler übergeben, um C++ 11-Funktionen verwenden zu können. Ich würde jedoch empfehlen, zuerst den Compiler auf eine neuere Version zu aktualisieren. –