我在Linux Mint 17.3 Rosa上安装了boost(1.60.0)并尝试使用此命令编译使用gcc编译器(v 4.8.4 64位)的boost accumulator示例(http://www.boost.org/doc/libs/1_60_0/doc/html/accumulators/user_s_guide.html):
>g++ -o exaccu exaccumulator.cpp -I/usr/local/lib/boost_1_60_0/
编译失败,错误消息列表以:
开头>exaccumulator.cpp: In function ‘int main()’:
>exaccumulator.cpp:22:32: error: ‘accumulators’ has not been declared
>std::cout << "Moment: " << accumulators::moment<2>(acc) << std::endl;
查找accumulators.hpp后,我更改了accumulators :: moment&lt; 2&gt;到时刻&lt; 2&gt;。这样做了,并且编译(使用相同的标志)成功了。或者,前缀&#34;累加器&#34;与&#34; boost :: accumulators ::时刻&lt; 2&gt;&#34;也工作过。所以我的问题是:我的boost安装有什么问题,或者教程中的示例中是否有拼写错误?
答案 0 :(得分:0)
这似乎确实是一个错字。
您可以使用整个boost
命名空间(坏主意)来编译示例:
using namespace boost;
accumulators::moment<2>(acc);
或者,就像您已经做过的那样,只需删除accumulators::
指定者,然后只使用namespace boost::accumulators;
。
或者只是指定它的完全限定名称:boost::accumulators::moment<2>(acc)
。