我目前正在创建一个类,我希望每次创建对象时都要使用随机数初始化其中一个私有成员。下面的代码不会产生问题:随机数类内初始化
private:
unsigned random = rand() % 10;
我会,但是,喜欢用C++ 11个随机引擎和分布做到这一点。我想能够做到沿着下面的代码线的东西,它不会编译,但会给出什么,我试图做一个总体思路:
private:
unsigned random = distribution(mersenne_generator(seed));
static std::random_device seed_generator;
static unsigned seed = seed_generator(); //So that it's not a new seed each time.
static std::mt19937 mersenne_generator;
static std::uniform_int_distribution<unsigned> distribution(0, 10);
此代码不能编译,因为我试图在类中定义一些静态成员。但是,我不确定在哪里定义它们。我可以创建一个初始化所有内容的成员函数,但之后我必须在main中运行它,这是我不想要的。我想只是在类中对所有随机定义进行分类,以便在main中创建一个对象时,它将隐式地创建随机数。有什么建议么?
这可能有助于http://stackoverflow.com/questions/11498304/generate-random-numbers-in-c-at-compile-time – imreal
是这个问题只是如何定义/初始化静态数据成员?你可以发布[SSCCE](http://sscce.org)吗? – dyp
我试图使用C++ 11随机生成器和引擎来实现与第一个代码块(每次创建对象时为该成员生成一个随机数)相同的功能。我不知道如何去做,静态数据成员只是我的尝试,但它不能编译。我把它作为一种伪代码来展示我的意图。 – JamesLens