今天看完了《C++ Primer Plus》的第九章,想自己写个多文件的项目来练练手。好不容易写完后,却发现出现下面的错误:
错误信息:
代码片段:1>------ 已启动生成: 项目: ProjectStudying, 配置: Debug Win32 ------ 1> functions.cpp 1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 5 1> e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明 1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 4 1> e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明 1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 3 1> e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明 1>e:\myprojects\projectstudying\projectstudying\functions.cpp(16): error C2572: “update”: 重定义默认参数 : 参数 2 1> e:\myprojects\projectstudying\projectstudying\header.h(17) : 参见“update”的声明 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
//函数原型 void update(basicInfo & someone,char* name = "",int age = 0,double weight = 0.0,double height = 0.0);
//函数定义 void update(basicInfo & someone,char* name = "",int age = 0,double weight = 0.0,double height = 0.0) { if (name != "" && age != 0 && weight !=0.0 && height != 0.0) { someone.name = name; someone.age = age; someone.height = height; someone.weight = weight; } }
这可叫我一阵头疼啊,我仔细看了错误信息,其实只有一个错误:重定义默认参数。
嗯,我看了看函数原型和定义,发现我两次都使用了默认参数,会不会是这里出了问题??
我试着将函数原型的默认参数删掉了,运行一下,发现成功了!
这让我欣喜万分,至少我找的出错的原因了,于是我又将原型的默认参数保留了下来,再将函数定义的默认参数删掉,运行,又成功了!
至此,重定义默认参数的问题已经被我误打误撞的解决了,其实删掉原型还是定义部分的默认参数,看个人的喜好罢了,只不过要认识到:
默认参数只能出现一次!!
【C++】关于编译器错误:error C2572 重定义默认参数 的说明
最新推荐文章于 2024-08-12 16:44:32 发布