使用boost :: posix_time时编译错误

时间:2012-03-28 12:28:22

标签: c++ boost compiler-errors

当我在c ++代码中包含boost / date_time / posix_time / posix_time.hpp时,我收到以下编译错误

/usr/include/boost/date_time/date_facet.hpp:560: error: declaration of ‘void boost::date_time::date_input_facet <date_type, CharT, InItrT>::special_values_parser(boost::date_time::special_values_parser <date_type, charT>)’
/usr/include/boost/date_time/special_values_parser.hpp:34: error: changes meaning of ‘special_values_parser’ from ‘class boost::date_time::special_values_parser <date_type, charT>’

我认为只是调用包含导致问题的因素。我有以下代码

#include "boost/date_time/posix_time/posix_time.hpp" 

class Chrono {
    public: Chrono() : _startTime(boost::posix_time::microsec_clock::local_time()) { ; }
    void reset() { _startTime = boost::posix_time::microsec_clock::local_time() ; }     
    boost::posix_time::time_duration elapsed() const { 
      return (boost::posix_time::microsec_clock::local_time() - _startTime) ; 
    } 
    boost::posix_time::ptime _startTime ; 
}; 

我使用gcc-4.3.4和boost x86_64 0:1.39.0-9.el5库

有人对此有所了解吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

关于您的第一个问题:您是否尝试过使用更新的编译器? gcc-4.3.4是古老的...我试过gcc-4.4.6和boost-1.46这个组合工作正常。此外,您发布的错误消息不完整,看起来至少有一半丢失。

关于第二个问题(关于你的CMakeLists.txt无效的问题):你试过一个干净的二叉树吗?如果缓存版本(CMakeCache.txt文件中的Boost_&lt; XXX&gt; _LIBRARY条目)与CMakeLists.txt文件中的版本不匹配,则会收到此类错误消息。如果您运行CMake,它找到了旧版本,然后您添加了VERSION要求,就会发生这种情况。在这种情况下,缓存的条目不会被清除,你最终会弄得一团糟。