0

这页纸

http://www.boost.org/doc/libs/1_42_0/doc/html/date_time/gregorian.html#date_construction

解释说您可以使用这种调用来初始化Boost日期:

date d(2002, Jan, 10);

但是当我尝试这样做时,编译器不知道'Jan'。

它确实适用于:

date d(2002, 1, 10);

编辑:

#include <boost/date_time/gregorian/gregorian.hpp>
..
{
    using namespace boost::gregorian;

    date limit_date(2010,Apr,1);
    date fake_date(2010,2,1);

    if (fake_date>limit_date)
    {
        ...
    }
}
4

2 回答 2

0

也许你错过了包括所需的命名空间?我不能确切地说是哪一个,因为你没有发布整个代码,但我可以假设,它可能是这样的:

using namespace boost::gregorian;

或者

using namespace boost::date_time;

更新:

Jan的辩护:

namespace boost {
namespace date_time {

  //! An enumeration of weekday names
  enum weekdays {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

  //! Simple enum to allow for nice programming with Jan, Feb, etc
  enum months_of_year {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec,NotAMonth,NumMonths};

} } //namespace date_time
于 2010-02-18T17:04:10.070 回答
0

好的,我找到了(愚蠢的)解决方案:我只是忘记将 date_time 链接到我自己的库......

由于 boost::date_time 的某些部分不需要显式链接,因此它们起作用了。这就是为什么我没有这样探索。

感谢 Jan 的帮助和枚举!

于 2010-02-19T10:17:31.833 回答