boost :: gregorian :: date没有`set-type`函数?

Nar*_*rek 2 c++ setter boost date gregorian-calendar

例如,我有一个日期对象:

boost::gregorian::date date1(2013,1,31);
Run Code Online (Sandbox Code Playgroud)

现在我想把这一天改为1.如何将日期设置为1?

Mik*_*our 6

除了赋值之外,日期类型是不可变的,因此您需要创建一个新日期:

date1 = boost::gregorian::date(date1.year(), date1.month(), 1);
Run Code Online (Sandbox Code Playgroud)

  • @Narek:这需要在每个setter上进行验证.不可变类型只需要在构造上进行验证,使它们更简单,错误范围更小,因此有些人更喜欢这种方法. (6认同)