C++ 如何在C++;

C++ 如何在C++;,c++,class,date,object,increment,C++,Class,Date,Object,Increment,我有一个我一直在工作的受让人,我被最后一个功能卡住了 使用函数void Increment(int numDays=1) 此函数应将日期向前移动参数中给定的日历天数。参数的默认值为1天。示例: Date d1(10, 31, 1998); // Oct 31, 1998 Date d2(6, 29, 1950); // June 29, 1950 d1.Increment(); // d1 is now Nov 1, 1998 d2.Increment(5); // d2 is now Jul

我有一个我一直在工作的受让人,我被最后一个功能卡住了

使用函数void Increment(int numDays=1)

此函数应将日期向前移动参数中给定的日历天数。参数的默认值为1天。示例:

Date d1(10, 31, 1998); // Oct 31, 1998
Date d2(6, 29, 1950); // June 29, 1950

d1.Increment(); // d1 is now Nov 1, 1998
d2.Increment(5); // d2 is now July 4, 1950
我不知道该怎么做

void Date::Increment(int numDays = 1)

我被卡住了,我知道如何通过++操作符告诉函数递增,但是当我必须让函数从一个月的最后一天递增到第一天,或者在该月的最后一天结束时,我会感到困惑。10月31日至11月1日,或6月29日至7月4日。我可以从7月5日到7月8日,但不断变化的月份让我困惑

30天有9月、4月、6月和11月。其余的有31天,二月除外,二月有28天,闰年除外(每4年一次,2008年是最后一年),闰年有29天


这对你来说应该足够了。

30天有9月、4月、6月和11月。其余的有31天,二月除外,二月有28天,闰年除外(每4年一次,2008年是最后一年),闰年有29天


这应该足够让你继续下去了。

你需要存储一个列表(或数组),列出每个月有多少天。如果将
numDays
添加到当前日期,并且该日期大于此日期,则还需要增加月份

例如,我们有一个日期对象,表示2010年3月29日。我们调用
Increment(4)
并将4添加到day变量中,最终得到2010年3月33日。我们现在检查三月有多少天,并找出它是31天(例如,
daysInMonth[3]==31
)。因为33大于31,我们需要从33中减去31,然后增加月份,最后是2010年4月2日


闰年中的2月(任何一年可以被4整除,除非它也可以被400整除,否则不能被100整除)和12月底之后的递增都需要特殊处理。

您需要存储一个列表(或数组),列出每个月的天数。如果将
numDays
添加到当前日期,并且该日期大于此日期,则还需要增加月份

例如,我们有一个日期对象,表示2010年3月29日。我们调用
Increment(4)
并将4添加到day变量中,最终得到2010年3月33日。我们现在检查三月有多少天,并找出它是31天(例如,
daysInMonth[3]==31
)。因为33大于31,我们需要从33中减去31,然后增加月份,最后是2010年4月2日


对于闰年中的2月(任何一年可以被4整除,除非也可以被400整除,否则不能被100整除),以及12月底之后的递增,都需要特殊处理。

首先,构造一个函数,如

 int numDaysSinceBeginning( Date );
统计从已知日期(例如1900年1月1日)到特定日期的天数

接下来,构造另一个函数,将当天的增量转换为日期

Date createDateWithDelta( int );
从你的例子来看

Date d2(6, 29, 1950); // June 29, 1950

int d2Delta = numDaysSinceBeginnning( d2 );

Date d2Incremented = createDateWithDelta( d2Delta + 5 ); // d2Incremented is July 4, 1950

首先,构造一个函数,如

 int numDaysSinceBeginning( Date );
统计从已知日期(例如1900年1月1日)到特定日期的天数

接下来,构造另一个函数,将当天的增量转换为日期

Date createDateWithDelta( int );
从你的例子来看

Date d2(6, 29, 1950); // June 29, 1950

int d2Delta = numDaysSinceBeginnning( d2 );

Date d2Incremented = createDateWithDelta( d2Delta + 5 ); // d2Incremented is July 4, 1950

是做作业用的吗?否则,您最好使用boost日期时间库。您是否设法执行了
作废日期::递减(int numDays=1)
?即使它不在作业中,它也可能提供你所需要的关于
增量
的洞察力。它可能是作业的副本吗?否则,您最好使用boost日期时间库。您是否设法执行了
作废日期::递减(int numDays=1)
?即使它不在作业中,它也可能为您提供增量所需的洞察力