Maison  >  Article  >  développement back-end  >  Erreur de syntaxe C++ : les paramètres par défaut ne peuvent pas être utilisés dans les paramètres de fonction, que dois-je faire ?

Erreur de syntaxe C++ : les paramètres par défaut ne peuvent pas être utilisés dans les paramètres de fonction, que dois-je faire ?

WBOY
WBOYoriginal
2023-08-22 11:15:371545parcourir

Erreur de syntaxe C++ : les paramètres par défaut ne peuvent pas être utilisés dans les paramètres de fonction, que dois-je faire ?

C++ est un langage de programmation puissant qui est souvent utilisé pour développer divers types d'applications et de logiciels. Cependant, lors de la programmation C++, vous pouvez rencontrer des situations dans lesquelles les paramètres par défaut ne peuvent pas être utilisés dans les paramètres de fonction. Cela est généralement dû à des erreurs de syntaxe. Alors, comment gérer ce genre d’erreur grammaticale ? Cet article présentera quelques méthodes de gestion des erreurs pour vous aider à mieux comprendre la programmation C++.

Tout d’abord, comprenons quels sont les paramètres par défaut. En C++, vous pouvez définir des valeurs par défaut pour les paramètres dans la définition de la fonction. De cette façon, lorsque nous appellerons la fonction, si les paramètres correspondants ne sont pas passés, le compilateur utilisera la valeur par défaut. Par exemple, le code suivant définit une fonction add(), dans laquelle les paramètres a et b ont des valeurs par défaut :

int add(int a = 0, int b = 0) {
    return a + b;
}

Lors de l'appel de la fonction add(), on ne peut pas passer de paramètres et utiliser les valeurs par défaut :

int result = add(); // result = 0

Cependant, dans la fonction Comment gérer le cas où les paramètres par défaut ne peuvent pas être utilisés dans les paramètres ? Cela inclut généralement les situations suivantes :

Cas 1 : Incohérence entre la déclaration de fonction et la définition de fonction

En C++, les fonctions doivent généralement être déclarées et définies aux deux endroits. La déclaration est généralement placée dans le fichier d'en-tête et la définition est généralement placée dans le fichier d'en-tête. généralement placé dans le fichier source. Si les paramètres par défaut sont définis dans la déclaration de fonction mais pas dans la définition de la fonction, il y aura un problème car les paramètres par défaut ne pourront pas être utilisés dans les paramètres. Par exemple :

// 声明
int add(int a, int b = 0);

// 定义
int add(int a, int b) {
    return a + b;
}

Le paramètre b dans la déclaration ici a une valeur par défaut, mais le paramètre b dans la définition n'a pas de valeur par défaut et des problèmes surviendront. La solution est d'ajouter le paramètre par défaut dans la définition :

// 声明
int add(int a, int b = 0);

// 定义
int add(int a, int b /*= 0*/) {
    return a + b;
}

Ajouter un commentaire /= 0/ au paramètre b dans la définition, indiquant que ce paramètre avait à l'origine une valeur par défaut, mais a été surchargé dans la définition.

Cas 2 : Surcharge de fonctions

La surcharge de fonctions fait référence à la définition de plusieurs fonctions portant le même nom dans la même portée, mais leurs listes de paramètres sont différentes. En cas de surcharge de fonctions, si une valeur par défaut est utilisée dans les paramètres d'une fonction, alors les paramètres des autres fonctions portant le même nom doivent également être définis sur les valeurs par défaut. Par exemple :

int add(int a, int b) {
    return a + b;
}

int add(int a) {
    return a + 10;
}

int add(int a, int b = 0) {
    return a + b;
}

Trois fonctions add() du même nom sont définies ici. Les paramètres de la deuxième fonction n'ont pas de valeurs par défaut, tandis que les paramètres des deux autres fonctions utilisent des valeurs par défaut. Cela empêchera le compilateur de déterminer quelle fonction appeler, ce qui entraînera une erreur indiquant que les paramètres par défaut ne peuvent pas être utilisés dans les paramètres. La solution est d'ajouter des valeurs par défaut aux paramètres de toutes les fonctions du même nom :

int add(int a, int b = 0) {
    return a + b;
}

int add(int a = 0) {
    return a + 10;
}

int add(int a, int b = 0) {
    return a + b;
}

Ici, une valeur par défaut est également ajoutée au paramètre a de la deuxième fonction, ainsi qu'aux paramètres de la première et de la troisième. fonctions.

Cas 3 : Pointeurs de fonction et références de fonction

En C++, les pointeurs de fonction et les références de fonction peuvent également provoquer des erreurs indiquant que les paramètres par défaut ne peuvent pas être utilisés dans les paramètres. En effet, lorsque nous appelons une fonction à l'aide d'un pointeur de fonction ou d'une référence de fonction, le compilateur ne peut pas déterminer si les paramètres de la fonction ont des valeurs par défaut. Par exemple :

typedef int(*add_func_ptr)(int a, int b = 0);

add_func_ptr p = add; // 函数指针

int(&add_ref)(int, int = 0) = add; // 函数引用

int result = p(1); // 编译错误:参数中不能使用默认参数

int result2 = add_ref(1); // 编译错误:参数中不能使用默认参数

La solution est d'ajouter la valeur par défaut à la liste des paramètres du pointeur de fonction ou de la référence de fonction :

typedef int(*add_func_ptr)(int a, int b /*= 0*/);

add_func_ptr p = add;

int(&add_ref)(int, int /*= 0*/) = add;

int result = p(1); // 成功调用add(1, 0)

int result2 = add_ref(1); // 成功调用add(1, 0)

En bref, lorsque nous rencontrons une erreur indiquant que les paramètres par défaut ne peuvent pas être utilisés dans les paramètres, nous devrions vérifiez soigneusement le code pour connaître l’emplacement de l’erreur. S'il s'agit d'un problème de surcharge de fonctions ou de pointeurs de fonctions et de références de fonctions, les valeurs par défaut doivent être ajoutées aux listes de paramètres de toutes les fonctions correspondantes. En cas d'incohérences entre la déclaration de fonction et la définition de fonction, des valeurs par défaut doivent également être ajoutées aux paramètres de la définition. Tant que ces méthodes de traitement simples sont utilisées, l'erreur selon laquelle les paramètres par défaut ne peuvent pas être utilisés dans les paramètres peut être résolue.

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