正在初始化静态 default_random_engine
Initializing static default_random_engine
我有一个简单的 class,它对我使用 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?
}
是否会在每次创建Random
类型的对象时都初始化_engine
?
我只是希望它在第一次初始化后保持原样,因为有人告诉我我可以多次使用同一个引擎。
Will _engine be initialized every time I create an object of type Random?
是的。
I just want it to stay like it is after the first initialization
在这种情况下,您应该这样定义它:
#include "Random.h"
std::default_random_engine Random::_engine;
没有这个,即使你的原始版本也无法编译(因为你没有定义静态成员)。
我问题中提供的link@NathanOliver帮我理解了,就是在源文件中做一个该类型的全局变量:
#include "random.h"
default_random_engine Question::_engine = default_random_engine{};
Random::Random() { }
我有一个简单的 class,它对我使用 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?
}
是否会在每次创建Random
类型的对象时都初始化_engine
?
我只是希望它在第一次初始化后保持原样,因为有人告诉我我可以多次使用同一个引擎。
Will _engine be initialized every time I create an object of type Random?
是的。
I just want it to stay like it is after the first initialization
在这种情况下,您应该这样定义它:
#include "Random.h"
std::default_random_engine Random::_engine;
没有这个,即使你的原始版本也无法编译(因为你没有定义静态成员)。
我问题中提供的link@NathanOliver帮我理解了,就是在源文件中做一个该类型的全局变量:
#include "random.h"
default_random_engine Question::_engine = default_random_engine{};
Random::Random() { }