السلام عليكم
لدي مشكلة في overload =+ operator
عند إنشاء كائن من class Date
Date d2(3,5, 2004
عند عمل عمليةoverload
d2 += 2
من المفترض أن تكون النتيجة (5,5,2004)ولكن يظهر لي(5,6,2004)بمعنى انه عمل زيادة للشهر ايضا فماالحل؟؟
هذا هو الكود .الرجاء المساعدة :rolleyes:
Date Date::operator +=(int d)
{
Date date = *this;
date.addDays(d);
return date;
}
Date& Date::addDays(int days){
if (!setDay(this->day + days)){
setDay( ((this->day + days) % 30));
addMonths( (this->day + days) / 30);
}
return *this;
}
Date& Date::addMonths(int months){
if (!setMonth(this->month + months)){
setMonth((this->month + months) % 12);
addYears( (this->month + months) / 12);
}
return *this;
}
Date& Date::addYears(int years){
setYear(year + years);
return *this;
}
bool setDay(int d){
if (d > 0 && d < 31){
day = d;
return true;
}
else return false;
}
bool setMonth(int m){
if (m > 0 && m < 13){
month = m;
return true;
}
else return false;
}
bool setYear(int y){
if (y > 1990){
year = y;
return true;
}
else return false;
}
bool setDay(char * d){return setDay(atoi(d));}
bool setMonth(char * m){return setMonth(atoi(m));}
bool setYear(char * y){return setYear(atoi(y));}
بإنتظار الردووود.