我有一个简单的类,使用default_random_engine
生成随机数对我有用。
Random.h:
#include <random>
using namespace std;
class Random
{
public:
Random();
~Random() {}
private:
static default_random_engine _engine;
};
Random.cpp:
#include "Random.h"
Random::Random()
{
_engine = default_random_engine{}; //Will this be initialized every time I create an object of type Random?
}
每次创建_engine
类型的对象时,都会Random
初始化吗?
我只是希望它在第一次初始化后保持原样,因为我被告知我可以多次使用相同的引擎。
答案 0 :(得分:3)
每次创建Random类型的对象时都会初始化_engine吗?
是
我只是希望它在第一次初始化之后保持原样
在这种情况下,您应该这样定义:
#include "Random.h"
std::default_random_engine Random::_engine;
如果没有这个,即使您的原始版本也不会编译(因为您还没有定义静态成员)。
答案 1 :(得分:0)
我的问题中提供的@NathanOliver链接帮助我理解,即在源文件中创建该类型的全局变量:
#include "random.h"
default_random_engine Question::_engine = default_random_engine{};
Random::Random() { }