在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條經驗 獲得超13個贊
我覺得不必使用默認值,你可以在構造函數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
提交
取消