在name.h中定义类class,他有三个构造函数Name();Name(char *first);Name(char *first, char *last);这三个构造函数的实现在name.cpp中。(这时程序没有问题)如果利用默认参数,构造函数为Name(char *first="default",char *last="default"); (在name.h中)Name::Name(char *first="default",char *last="default") (name.cpp中为){strcpy(firstname,first);strcpy(lastname,last);}程序中出现两个问题error C2572: 'Name::Name' : redefinition of default parameter : parameter 2c:\documents and settings\administrator\桌面\name.h(11) : see declaration of 'Name::Name'error C2572: 'Name::Name' : redefinition of default parameter : parameter 1c:\documents and settings\administrator\桌面\name.h(11) : see declaration of 'Name::Name'怎么改正在这种情况下才能正常运行如果程序为Name(char *first="default",char *last="default") (name.h中){strcpy(firstname,first);strcpy(lastname,last);}则程序没没问题
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
构造函数定义改为
Name::Name(char *first,char *last) (name.cpp中为)
{
strcpy(firstname,first);
strcpy(lastname,last);
}
开满天机
TA贡献1786条经验 获得超12个赞
我觉得不必使用默认值,你可以在构造函数Name()中实现
Name::Name()
{
strcpy(firstname,"default");
strcpy(lastname,"default");
}
墨色风雨
TA贡献1853条经验 获得超6个赞
解决办法:
Name(char *first="default",char *last="default");(name.h中)
Name::Name("default", "default") (name.cpp中为)
{
strcpy(firstname,first);
strcpy(lastname,last);
}
应该就OK了
添加回答
举报
0/150
提交
取消