初始化ctor中的随机常数值
Initialize random constant values in ctor
在我的类中,似乎有必要初始化结构中的一些常量随机值。
为了实现这一点,有明确的限制:
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);
以及以下结构:
typedef struct {
unsigned c1, c2, c3;
const unsigned limc1 = lim1(eng),
limc2 = lim2(eng),
limc3 = lim3(eng);
} CTR;
所以,当我尝试用这些值进行初始化时
class Foo {
private:
CTR ctr;
public:
voud initializeCTR(CTR &ctr);
};
问题是字段ctr
对于initializeCTR()
是不可见的
Foo foo;
foo.initializeCTR(ctr); <- ctr undefined here
我应该如何编写ctor或其他代码来为所有类实例实现不同的随机值?
在此代码中:
Foo foo;
foo.initializeCTR(ctr); <- ctr undefined here
您尝试访问的变量ctr
不是类Foo
中定义的私有字段ctr
。解决方案应该是:
void Foo::initializeCTR() {
ctr.do_something();
// ...
}
更好的解决方案是在构造函数中使用它:
Foo::Foo() {
ctr.do_something();
// ...
}
相关文章:
- C++表达式必须具有常数值
- 表达式必须具有常数值,变量不能用作定义数组大小的常数
- C++重载|(按位OR)运算符,返回常数值
- 确定LLVM中的常数值
- 在编译时间之前抓取常数值
- 如何基于用户设置的初始变量设置一组常数值
- C++:在函数内部声明数组时,表达式必须具有常数值
- 常数值可能不一致
- 初始化ctor中的随机常数值
- 使用整数常量0初始化实例,但不使用其他常数值或整数变量
- 从模板参数中指定常数值
- 枚举指针是否可以指向常数值
- C++std用一个常数值列出初始化,它是否会改变性能
- C++-参考参数的常数值
- c++表达式必须有一个常数值
- 如何创建一个std::map的常数值,它仍然可以被[]操作符访问
- c++常数值1j是什么意思?
- 表达式在c++中必须有一个常数值错误
- 错误:表达式必须具有常数值.对于一个明显的常数值
- 在c++中表达式必须有一个常数值