1

我在 Linux Mint 17.3 Rosa 上安装了boost (1.60.0) 并尝试用使用此命令的 gcc 编译器(v 4.8.4 64 位):

>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<2> 更改为 moment<2>。这成功了,编译(使用相同的标志)成功了。或者,在“累加器”前面加上“boost::accumulators::moment<2>”也可以。所以我的问题是:我的 boost 安装有问题还是教程中的示例中有错字?

4

1 回答 1

0

这似乎确实是一个错字。

您可以使用整个boost命名空间(坏主意)来编译示例:

using namespace boost;
accumulators::moment<2>(acc);

或者,就像您已经做过的那样,只需删除accumulators::特定对象并仅使用namespace boost::accumulators;.

或者只是指定它的完全限定名称 : boost::accumulators::moment<2>(acc)

于 2016-06-09T16:54:39.497 回答