C++报错“redefinition of formal parameter”是什么意思?该如何解决?
错误含义
redefinition of formal parameter 即 形参重定义错误。
你编写的getGuessFromUser函数的形参列表已经声明了名为guess的int类型变量,该变量的作用域覆盖整个函数体。你在函数内部又重复写了int guess;语句,相当于在同一个作用域下定义了两个同名变量,不符合C++的语法规则,因此编译器抛出该错误。
修复方法
结合你的函数逻辑,不需要接收外部传入的初始guess值,有两种可行修复方案:
- 方案一(更推荐):删除多余的形参声明
int getGuessFromUser() { std::cout << "Guess my lucky number between 0 and 10: "; int guess; std::cin >> guess; return guess; }
- 方案二:删除函数内部的重复变量定义,直接复用形参
int getGuessFromUser(int guess) { std::cout << "Guess my lucky number between 0 and 10: "; std::cin >> guess; return guess; }
方案二的形参没有实际作用,传入的初始值会被用户输入直接覆盖,因此优先选择方案一。
内容的提问来源于stack exchange,提问作者AirMoney
相关产品推荐
相关产品推荐

