C++调用Verify函数出现参数过多错误的求助
解决C++函数参数不匹配报错及代码问题
核心错误原因
报错too many arguments to function 'bool Verify(int, int)'的直接原因是函数声明与定义/调用不匹配:
- 代码开头声明的
Verify函数仅接受2个参数:bool Verify(int number,int size); - 实际调用时传入了3个参数
Verify(number,size,array),且函数定义也写了3个参数bool Verify(int number,int size,int array[])
修复步骤
- 修正函数声明
将开头的函数声明改为与定义一致的形式:
bool Verify(int number,int size,int array[]);
- 修复其他潜在问题
除参数不匹配外,代码还有两处需要调整:
- 替换非标准变长数组:
int array[size];是C风格变长数组,C++标准不支持,建议改用std::vector(需添加<vector>头文件),提升代码可移植性:#include<vector> // 替换int array[size];为: std::vector<int> array(size); // 函数参数同步修改为: bool Verify(int number,int size,std::vector<int>& array); - 修复循环变量递增逻辑:第二个
for循环for(int j=0;j<size;j+2)中的j+2不会改变j的值,会导致无限循环,需改为j+=2
修复后的完整代码
#include<iostream> #include<cmath> #include<vector> bool Verify(int number,int size,std::vector<int>& array); int main() { int number; std::cin>>number; int size= floor(log10(number))+1; std::vector<int> array(size); if(Verify(number,size,array)){ std::cout<<"这个数字验证通过"; }else{ std::cout<<"这个数字验证不通过"; } return 0; } bool Verify(int number,int size,std::vector<int>& array) { int sum=0; for(int i=0;i<size;i++){ int digit=number%10; number=number/10; array[i]=digit; } for(int j=0;j<size;j+=2){ if(array[j]%2==1) { sum=sum+array[j]; }else if(array[j]>4){ sum=sum+2*array[j]-9; }else { sum=sum+2*array[j]; } } return sum%10==0; }
额外提示
- 调用
Verify时无需写==true,函数返回的就是布尔值,直接写if(Verify(...))更简洁 std::vector是C++中动态数组的标准实现,比变长数组更安全、灵活
内容的提问来源于stack exchange,提问作者potato-sam
相关产品推荐
相关产品推荐

