当我在Eclipse中编译代码时,它运行正常。但是如果我尝试用CMake编译它,那么这个过程就会失败。它说:
错误:'default_random_engine'未命名类型 default_random_engine generator;
错误:'uniform_int_distribution'没有命名类型 uniform_int_distribution distribution;
还有一些错误,我认为这些是这两个错误的结果。
class randomInt
{
private:
int m_max;
default_random_engine generator;
uniform_int_distribution<int> distribution;
public:
randomInt(int max = 0) :
m_max(max),
generator(time(0)),
distribution(0, m_max)
{}
int operator ()()
{
return distribution(generator);
}
};
int main(int argc, char **argv)
{
vector<int> vec(100);
generate(vec.begin(), vec.end(), randomInt(100));
ostream_iterator<int> streamIt(cout, ",\n");
copy(vec.begin(), vec.end(), streamIt);
return 0;
}
有我的CMakeLists.txt
project(TEST)
# States that CMake required version must be greater than 2.6
cmake_minimum_required(VERSION 2.8)
# Setup sources
set(TEST_SOURCES
aufgabe2_1.cpp
aufgabe2_2.cpp
aufgabe2_3.cpp
aufgabe2_4.cpp)
set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -std=c++11")
# Build executable
add_executable(main ${TEST_SOURCES})
答案 0 :(得分:0)
这些是来自C ++标准库pseudo-random number generation的符号,但您尚未使用命名空间std
限定符号,因此请使用std::default_random_engine
和{{ 1}}。