error C2548: 缺少参数 2 的默认参数

本文探讨了C++中关于函数定义与调用时默认参数的使用规则,并通过具体示例说明了如何正确地设置及调用带有默认参数的函数。当函数含有默认参数时,所有在其后的参数也必须提供默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.h文件
void DeleteTableRecursion(int beginPos, int &size, COuterIRelation *pt);
.cpp文件
void CCSyncSetDlg::DeleteTableRecursion(int beginPos=0, int &size, COuterIRelation *pt)
{
int i=0, k=0;
for(i=beginPos; i<size; i++)
{
if(vecNodes[i]->pt==pt && vecNodes[i]->type==SYNC_ROW)
{
//DeleteRowRecursion(i+1, size, vecNodes[i]->pr);
vecNodes[i]->bDel = FALSE;
vecNodes[i]->bNew = FALSE;
}
}
}

然后编译报错:
1>e:\csyncset\csyncset\csyncsetdlg.cpp(463) : error C2548: “CCSyncSetDlg::DeleteTableRecursion”: 缺少参数 2 的默认参数
1>e:\csyncset\csyncset\csyncsetdlg.cpp(463) : error C2548: “CCSyncSetDlg::DeleteTableRecursion”: 缺少参数 3 的默认参数

原因:
C++语法规定:只要有一个默认参数,那么该参数后面的所有参数都必须指定默认值
C/C++ code

void f1(int i, int x = 0, int y);//错
void f2(int i, int x = 0, int y = 0);//对
这是为了能够判断你调用时省略的到底是哪一个参数
解决:你可以改成这种形式,将调用的都相对的改一下
参考:http://topic.youkuaiyun.com/u/20090711/22/51677a10-54ab-4878-afaf-ae0a351f7a36.html
1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(22): error C2275: “Student”: 将此类型用作表达式非法 1> d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(11) : 参见“Student”的声明 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(22): error C2146: 语法错误: 缺少“;”(在标识符“newStudent”的前面) 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(22): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(24): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(24): error C2224: “.id”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): error C2224: “.name”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): error C2224: “.name”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): warning C4133: “函数”: 从“FILE *”到“char *”的类型不兼容 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(28): error C2198: “fgets”: 用于调用的参数太少 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(29): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(29): error C2224: “.name”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(29): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(29): error C2224: “.name”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(29): error C2198: “strcspn”: 用于调用的参数太少 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(32): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(32): error C2224: “.score”的左侧必须具有结构/联合类型 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(34): error C2065: “newStudent”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(34): error C2440: “=”: 无法从“int”转换为“Student” 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(77): error C2143: 语法错误 : 缺少“;”(在“类型”的前面) 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(78): error C2143: 语法错误 : 缺少“;”(在“类型”的前面) 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(79): error C2065: “total”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(81): error C2065: “i”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(81): error C2065: “i”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(81): error C2065: “i”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(82): error C2065: “total”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(82): error C2065: “i”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(82): warning C4244: “+=”: 从“float”转换到“int”,可能丢失数据 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(84): error C2065: “total”: 未声明的标识符 1>d:\documents\visual studio 2010\projects\ches\ches\gghghg.c(84): warning C4244: “return”: 从“int”转换到“float”,可能丢失数据 该代码在VC c++2010上报错,但在vs上没有报错
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值