我正在用c ++创建一个“日期”类,它包含日,月和年变量以及一组用于它的运算符函数。
我的类有一个date.h头和date.cpp,而date.cpp中的一个操作符函数给了我一堆错误。
date.cpp (我希望此运算符函数计算添加的天数并返回一个新的日期对象,并避免更改原始日期对象。)
date date::operator+(long days) const{
date dTemp( date.getDay(), date.getMonth(), date.getYear() );
for(int i=0;i<days;i++){
//If days go over a months day count.
if(dTemp.getDay() >= daysInMonth[dTemp.getMonth()]){
dTemp.setDay(1);
if(dTemp.getMonth() < 12){
dTemp.setMonth(dTemp.getMonth() + 1);
}
else{
//Changing a year.
dTemp.setMonth(1);
dTemp.setYear(dTemp.getYear() + 1);
}
}
else{
dTemp.setDay(dTemp.getDay() + 1);
}
}
return dTemp;
}
错误:
1>h:\c++\teht21\teht20\date.cpp(74): error C2143: syntax error : missing ')' before '.'
1>h:\c++\teht21\teht20\date.cpp(74): error C3484: syntax error: expected '->' before the return type
1>h:\c++\teht21\teht20\date.cpp(74): error C2061: syntax error : identifier 'getDay'
1>h:\c++\teht21\teht20\date.cpp(79): error C2065: 'dTemp' : undeclared identifier
1>h:\c++\teht21\teht20\date.cpp(79): error C2228: left of '.getDay' must have class/struct/union
1> type is ''unknown-type''
第74行是:
date dTemp( date.getDay(), date.getMonth(), date.getYear() );
非常感谢任何帮助。 如果您需要查看更多代码,请与我们联系。
答案 0 :(得分:3)
如果getDay()
,getMonth()
,getYear()
是成员函数,并且您想在this
上调用它们,请更改:
date dTemp( date.getDay(), date.getMonth(), date.getYear() );
为:
date dTemp( getDay(), getMonth(), getYear() );
答案 1 :(得分:2)
可能你想在这里调用静态方法:
date dTemp( date.getDay(), date.getMonth(), date.getYear() );
所以:
date dTemp( date::getDay(), date::getMonth(), date::getYear() );