


Erreur de compilation C++ : les types locaux ne sont pas autorisés comme paramètres de modèle, comment y remédier ?
Aug 21, 2023 pm 09:39 PMLors de l'écriture de code C++, vous rencontrerez parfois des erreurs de compilation telles que « les types locaux ne sont pas autorisés comme paramètres de modèle ». Cela signifie généralement que nous utilisons un type local dans un paramètre de modèle, tel qu'une classe ou un type de structure défini dans une fonction. Dans cet article, nous aborderons ce problème et comment le résoudre.
Tout d’abord, voyons pourquoi cette erreur de compilation se produit. En C++, les paramètres de modèle doivent être résolus au moment de la compilation, tandis que la définition du type local a lieu au moment de l'exécution. Par conséquent, les types locaux ne peuvent pas être utilisés comme paramètres de modèle car le compilateur ne sait pas comment les analyser.
Donnez un exemple pour illustrer ce problème :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Dans le code ci-dessus, nous définissons une fonction modèle printSize, qui reçoit un paramètre arg. Nous définissons également un type de structure locale myLocalStruct et utilisons sizeof pour en obtenir la taille et le paramètre arg.
Lorsque nous compilons ce code, nous obtenons un message d'erreur : "Les types locaux ne sont pas autorisés comme paramètres de modèle".
Pour résoudre ce problème, nous devons convertir le type local en type global. Nous pouvons déplacer la définition de type local en dehors de la fonction ou la définir comme type membre de la classe.
Voyons comment nous pouvons corriger le code ci-dessus en utilisant des types globaux :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Maintenant, nous avons déplacé la définition de la structure locale en dehors de la fonction. Le correctif est compilé et exécuté avec succès, et le résultat est correct.
En plus de convertir les types locaux en types globaux, une autre solution consiste à définir le type local comme type membre de la classe. Cette approche nécessite du code supplémentaire, mais est parfois plus pratique :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Dans le code ci-dessus, nous définissons le type de structure locale comme type de membre de myClass. Ce correctif se compile et s'exécute également avec succès et génère les résultats corrects.
Pour résumer, lorsque nous rencontrons une erreur de compilation de « les types locaux ne sont pas autorisés comme paramètres de modèle » lors de l'utilisation de modèles C++, nous devons convertir le type local en un type global ou un type membre de la classe. Ces correctifs peuvent résoudre ce problème avec succès.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment résoudre l'erreur de compilation C++ : « aucune fonction correspondante pour l'appel à « fonction » ?

Résoudre l'erreur de compilation C++ : « types incompatibles », comment la résoudre ?

Erreur de compilation C++ : Définition en double des paramètres de fonction, comment la résoudre ?

Comment résoudre l'erreur de compilation C++ : « aucune correspondance pour l'appel à la « fonction » ?

Comment résoudre l'erreur de compilation C++ : « redéfinition de la « fonction » ?

Comment résoudre l'erreur de compilation C++ : « surcharge ambiguë pour « fonction » ?

Erreur de compilation C++ : Variable non définie utilisée, comment la résoudre ?

Erreur de compilation C++ : plusieurs définitions, comment les modifier ?
