Initializing static default_random_engine
本问题已经有最佳答案,请猛点这里访问。
我有一个简单的类,它对我使用
随机的:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <random> using namespace std; class Random { public: Random(); ~Random() {} private: static default_random_engine _engine; }; |
Random.cpp:
1 2 3 4 5 6 | #include"Random.h" Random::Random() { _engine = default_random_engine{}; //Will this be initialized every time I create an object of type Random? } |
每次创建
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
在这种情况下,您应该这样定义它:
1 2 3 | #include"Random.h" std::default_random_engine Random::_engine; |
如果没有这个,即使原始版本也无法编译(因为您没有定义静态成员)。
在我的问题中提供的链接@nathanoliver帮助我理解,这是为了在源文件中生成该类型的全局变量:
1 2 3 4 5 | #include"random.h" default_random_engine Question::_engine = default_random_engine{}; Random::Random() { } |