Heim > Backend-Entwicklung > C++ > Hauptteil

Wie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „<'-Token'?

WBOY
Freigeben: 2023-08-25 18:30:21
Original
3246 Leute haben es durchsucht

如何解决C++语法错误:'expected initializer before '<' token'?

Wie behebt man den C++-Syntaxfehler: „Initialisierer vor „<“ erwartet“?

Bei der C++-Programmierung treten häufig verschiedene Fehler auf. Einer der häufigsten Fehler ist „Erwarteter Initialisierer vor ‚<‘“. Dieser Fehler tritt normalerweise bei der Verwendung von Vorlagenklassen oder Vorlagenfunktionen auf und Sie müssen einige spezifische Syntaxdetails beachten. In diesem Artikel besprechen wir die Ursachen dieses Fehlers und wie man ihn beheben kann.

Sehen wir uns zunächst ein Codebeispiel an, um diesen Fehler besser zu verstehen:

template <typename T>
void PrintVector(vector<T> vec) {
    for (const auto& elem : vec) {
        cout << elem << " ";
    }
    cout << endl;
}

int main() {
    vector<int> myVector = {1, 2, 3, 4, 5};
    PrintVector<int>(myVector);
    return 0;
}
Nach dem Login kopieren
Nach dem Login kopieren

Im obigen Code haben wir eine Vorlagenfunktion PrintVector definiert, die ein Vektorobjekt akzeptiert und seine Elemente druckt. In der Hauptfunktion erstellen wir ein Vektorobjekt mit Ganzzahlen und übergeben es an die PrintVector-Funktion. Wenn wir jedoch versuchen, diesen Code zu kompilieren, erhalten wir die folgende Fehlermeldung: „erwarteter Initialisierer vor ‚<‘“.

Der Grund, warum dieser Fehler auftritt, liegt darin, dass der Compiler das „<“-Symbol nicht erkennt. Dies liegt daran, dass der C++-Compiler „<“ standardmäßig als Vergleichsoperator und nicht als Teil der Vorlagenparameterliste interpretiert. Daher benötigen wir eine Möglichkeit, dem Compiler mitzuteilen, dass „<“ Teil einer Vorlagenparameterliste ist.

Es ist sehr einfach, diesen Fehler zu beheben. Wir müssen nur das Schlüsselwort „template“ vor dem „<“-Symbol hinzufügen. Der geänderte Code lautet wie folgt:

template <typename T>
void PrintVector(vector<T> vec) {
    for (const auto& elem : vec) {
        cout << elem << " ";
    }
    cout << endl;
}

int main() {
    vector<int> myVector = {1, 2, 3, 4, 5};
    PrintVector<int>(myVector);
    return 0;
}
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt haben wir das Schlüsselwort „template“ hinzugefügt, um dem Compiler mitzuteilen, dass „<“ Teil einer Vorlagenparameterliste ist. Dadurch kann der Compiler Vorlagentypen in Ihrem Code korrekt identifizieren.

Nachdem Sie den Fehler behoben haben, kompilieren Sie den Code erneut und Sie erhalten die erwartete Ausgabe. So lösen Sie den C++-Syntaxfehler „erwarteter Initialisierer vor ‚<‘“.

Zusammenfassend lässt sich sagen, dass die Fehlermeldung „erwarteter Initialisierer vor ‚<‘“ bei der C++-Programmierung möglicherweise darauf zurückzuführen ist, dass der Vorlagentyp nicht korrekt angegeben wurde. Dieser Fehler kann behoben werden, indem das Schlüsselwort „template“ vor der Template-Funktion oder Template-Klasse hinzugefügt wird und sichergestellt wird, dass das „<“-Symbol korrekt als Teil der Template-Parameterliste interpretiert wird. Ich hoffe, dass dieser Artikel den Lesern helfen kann, solche häufigen C++-Syntaxfehler zu lösen.

Das obige ist der detaillierte Inhalt vonWie behebt man den C++-Syntaxfehler: „Erwarteter Initialisierer vor „<'-Token'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!