C++ 初始化ctor中的随机常量值

C++ 初始化ctor中的随机常量值,c++,c++11,random,constructor,C++,C++11,Random,Constructor,在我的课堂上,似乎有必要初始化结构中的一些常量随机值 为实现这一目标,有明确的限制: std::random_device rd; std::mt19937 eng(rd()); std::uniform_int_distribution<> lim1(3, 6); std::uniform_int_distribution<> lim2(7, 20); std::uniform_int_distribution<> lim3(1000, 100000);

在我的课堂上,似乎有必要初始化结构中的一些常量随机值

为实现这一目标,有明确的限制:

std::random_device rd;
std::mt19937 eng(rd());
std::uniform_int_distribution<> lim1(3, 6);
std::uniform_int_distribution<> lim2(7, 20);
std::uniform_int_distribution<> lim3(1000, 100000);
所以,当我尝试用这些值进行初始化时

class Foo {
    private:
        CTR ctr;
    public:
    voud initializeCTR(CTR &ctr);
};
问题是
initializeCTR()

Foo-Foo;
foo.初始化器(ctr) 在此代码中:

Foo foo;
foo.initializeCTR(ctr); <- ctr undefined here
更好的解决方案是在构造函数中使用它:

Foo::Foo() {
  ctr.do_something();
  // ...
}

initializeCTR
应该做什么?它是否需要处理两个
CTR
实例(一个作为参数传递,另一个作为
Foo
的成员)?看来你并没有打算拥有这两个(或者你不会被缺少第二个实例的客户端弄糊涂了,也许你已经知道不给C++相同的名字)。您可以直接使用
struct-CTR
Foo foo;
foo.initializeCTR(ctr); <- ctr undefined here
void Foo::initializeCTR() {
  ctr.do_something();
  // ...
}
Foo::Foo() {
  ctr.do_something();
  // ...
}