Maison  >  Article  >  développement back-end  >  Erreur de syntaxe C++ : le type de paramètre de fonction ne correspond pas au prototype de fonction, comment le corriger ?

Erreur de syntaxe C++ : le type de paramètre de fonction ne correspond pas au prototype de fonction, comment le corriger ?

WBOY
WBOYoriginal
2023-08-22 08:01:331429parcourir

C++ est un langage de programmation très puissant, mais dans le processus d'écriture de code, nous ferons inévitablement des erreurs. L'une des erreurs courantes est que le type de paramètre de fonction ne correspond pas au prototype de fonction. Cette erreur entraînera l'échec de la compilation et de l'exécution normale du programme. Alors, comment corriger cette erreur ? Cet article vous présentera deux solutions.

1. Analyse des erreurs

Tout d'abord, comprenons d'abord la cause de l'erreur selon laquelle le type de paramètre réel de la fonction ne correspond pas au prototype de la fonction.

Prototype de fonction : De manière générale, avant d'écrire une fonction, nous définirons le prototype de fonction dans le programme, c'est-à-dire spécifier son nom, son type de valeur de retour et sa liste de paramètres. Le prototype de fonction est l'information qui permet au compilateur de connaître la fonction afin qu'il puisse effectuer la vérification du type de paramètre et la vérification du type de retour de fonction au moment de la compilation.

Type de paramètre de fonction : le paramètre réel de la fonction est la valeur de paramètre spécifique transmise à la fonction lorsque la fonction est appelée.

L'erreur ci-dessus se produit lorsque le prototype de fonction ne correspond pas au type de paramètre de fonction. Par exemple, nous définissons une fonction :

void increase(int i) {
    i++;
    cout << "increased value = " << i << endl;
}

Ensuite, lors de l'appel de la fonction dans la fonction principale, la mauvaise méthode d'appel est :

double num = 1.5;
increase(num); // 错误调用,参数类型应该为int

Puisque la fonction augmenter n'accepte que les paramètres entiers, l'appel ci-dessus aura certainement le même type de paramètre de fonction et fonction Erreur d'incompatibilité du prototype.

2. Solution 1 : Surcharge de fonctions

La surcharge de fonctions consiste à définir plusieurs fonctions avec le même nom mais des paramètres différents dans une classe. En C++, la surcharge de fonctions doit remplir deux conditions :

  1. Le nom de la fonction est le même ;
  2. Au moins une différence dans le type de paramètre, le nombre de paramètres ou l'ordre des paramètres.

Nous pouvons utiliser la surcharge de fonctions pour résoudre l'erreur de non-concordance entre le type de paramètre de fonction et le prototype de fonction. Par exemple, nous pouvons définir deux fonctions d'augmentation :

void increase(int i) {
    i++;
    cout << "increased value = " << i << endl;
}

void increase(double d) {
    int i = static_cast(d);
    i++;
    cout << "increased value = " << i << endl;
}

De cette façon, différentes fonctions peuvent être appelées dans la fonction principale via différents types de paramètres :

int num1 = 1;
double num2 = 1.5;

increase(num1); // 调用第一个函数
increase(num2); // 调用第二个函数

Bien que la surcharge de fonction puisse résoudre le problème de non-concordance entre le type de paramètre de fonction et le prototype de fonction Erreur, mais une utilisation excessive entraînera une réduction de la lisibilité du code, vous devez donc faire attention lorsque vous l'utilisez.

3. Solution 2 : Conversion de type

La conversion de type fait référence à la conversion de la valeur d'un type de données en la valeur d'un autre type de données. En C++, il existe trois méthodes de conversion de type couramment utilisées :

  1. Conversion de type implicite : conversion automatique, complétée par le compilateur ;
  2. Conversion de type explicite : conversion forcée, nécessité d'utiliser une syntaxe spécifique
  3. Conversion de type static_cast : plus sûre ; méthode de conversion de type.

Lors de la résolution de l'erreur selon laquelle le type de paramètre réel de la fonction ne correspond pas au prototype de la fonction, nous pouvons utiliser la conversion de type explicite ou la méthode de conversion de type static_cast pour effectuer la conversion. Par exemple, nous pouvons modifier l'appel d'erreur ci-dessus en :

double num = 1.5;
increase(static_cast<int>(num)); // 使用显式类型转换或static_cast类型转换

De cette façon, le type double de num peut être converti en type int, évitant ainsi l'erreur de non-concordance entre le type de paramètre de fonction et le prototype de fonction.

4. Résumé

En programmation C++, l'erreur de non-concordance entre le type de paramètre de fonction et le prototype de fonction est un problème courant. Cet article décrit deux solutions de contournement : la surcharge de fonctions et la conversion de type. Dans le processus de programmation proprement dit, nous pouvons choisir différentes méthodes en fonction de la situation spécifique. Quelle que soit la méthode adoptée, nous devons éviter cette erreur en fonction des besoins réels du programme et garantir la lisibilité et la qualité du code.

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