【发布时间】:2014-03-18 19:40:33
【问题描述】:
我目前正在创建一个类,我希望在每次创建对象时使用随机数初始化其中一个私有成员。以下代码没有问题:
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 中创建一个对象时,它将隐式创建随机数。有什么建议吗?
【问题讨论】:
-
这个问题只是如何定义/初始化静态数据成员吗?你能发个SSCCE吗?
-
我正在尝试使用 C++11 随机生成器和引擎实现与第一个代码块(每次创建对象时为该成员生成一个随机数)相同的功能。我不知道该怎么做,静态数据成员只是我的尝试,但它没有编译。我将它作为一种伪代码包含在内以表明我的意图。
标签: c++ c++11 random initialization