Maison >développement back-end >C++ >Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton « < » ?

Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant le jeton « < » ?

WBOY
WBOYoriginal
2023-08-25 18:30:213371parcourir

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

Comment résoudre l'erreur de syntaxe C++ : « initialiseur attendu avant « < » ?

En programmation C++, diverses erreurs sont souvent rencontrées. L'une des erreurs courantes est "l'initialiseur attendu avant le jeton '<'". Cette erreur se produit généralement lors de l'utilisation de classes de modèles ou de fonctions de modèles, et vous devez faire attention à certains détails de syntaxe spécifiques. Dans cet article, nous discuterons des causes de cette erreur et comment y remédier.

Tout d'abord, voyons un exemple de code pour mieux comprendre cette erreur :

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;
}

Dans le code ci-dessus, nous avons défini une fonction modèle PrintVector qui accepte un objet vectoriel et imprime ses éléments. Dans la fonction principale, nous créons un objet vectoriel contenant des entiers et le transmettons à la fonction PrintVector. Cependant, lorsque nous essayons de compiler ce code, nous recevons le message d'erreur suivant : "initialiseur attendu avant '<'".

La raison pour laquelle cette erreur se produit est que le compilateur ne reconnaît pas le symbole "<". En effet, le compilateur C++ interprète par défaut "<" comme un opérateur de comparaison et non comme faisant partie de la liste des paramètres du modèle. Par conséquent, nous avons besoin d'un moyen d'indiquer au compilateur que "<" fait partie d'une liste de paramètres de modèle.

Il est très simple de résoudre cette erreur. Il suffit d'ajouter le mot-clé "template" avant le symbole "<" après la fonction modèle. Le code modifié est le suivant :

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;
}

Maintenant, nous avons ajouté le mot-clé "template" pour indiquer au compilateur que "<" fait partie d'une liste de paramètres de modèle. Cela permet au compilateur d'identifier correctement les types de modèles dans votre code.

Après avoir corrigé l'erreur, recompilez le code et vous obtiendrez le résultat que nous attendons. Voici comment résoudre l'erreur de syntaxe C++ "initialiseur attendu avant le jeton '<'".

Pour résumer, lorsque vous rencontrez le message d'erreur "initialiseur attendu avant le jeton '<'" dans la programmation C++, cela peut être dû au fait que le type de modèle n'est pas spécifié correctement. Cette erreur peut être résolue en ajoutant le mot-clé « template » avant la fonction de modèle ou la classe de modèle et en veillant à ce que le symbole « < » soit correctement interprété dans le cadre de la liste des paramètres du modèle. J'espère que cet article pourra aider les lecteurs à résoudre ces erreurs de syntaxe C++ courantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn