当我使用boost/random/uniform_int_distribution.hpp
并执行:
boost::random::uniform_int_distribution<> dist(0, 5);
我得到的错误是:
$ g++ game.cpp -std=c++11 -Wall -Ipath/to/boost -o game && ./game
game.cpp:11:20: error: expected type-specifier
game.cpp:11:20: error: expected '>'
为什么我收到此错误?
注意:使用std::uniform_int_distribution<>
时,我不会收到此错误。
这是导致问题的代码:
#include <boost/random/uniform_int_distribution.hpp>
template<
class Engine = boost::default_random_engine
>
class game
{
boost::random::uniform_int_distribution<int> dist{0, 5};
};
int main()
{
}
答案 0 :(得分:5)
Boost.Random没有定义default_random_engine
类型。直接使用Mersenne twister引擎(或其中定义的other generators之一)
#include <boost/random/uniform_int_distribution.hpp>
#include <boost/random/mersenne_twister.hpp>
template<
class Engine = boost::mt19937
>
class game
{
boost::random::uniform_int_distribution<> dist{0, 5};
};
此外,由于问题标记为C ++ 11,我会提到标准库确实在<random>
标题中定义了std::default_random_engine
和std::uniform_int_distribution
。