分布作为全局变量
distribution as global variable
在我的项目中,我尝试使用均匀分布作为全局变量。
在一个文件(global.h)中,我写道:
#include <random>
extern std::uniform_real_distribution<> sample;
然后,在另一个文件中,我想用以下命令初始化它(设置参数):
#include "global.h"
std::uniform_real_distribution<>::param_type Params(-0.3,0.3);
sample.param(Params);
但是我收到以下错误消息:
"sample"未命名类型
有什么建议吗?
您不能只在全局范围内执行此操作:
sample.param(Params);
你必须在某个函数中做到这一点:
void setupParams() {
sample.param(std::uniform_real_distribution<>::param_type{-0.3, 0.3});
}
它可以包装在其他类型的构造函数中:
class MyDistribution {
public:
MyDistribution() {
sample.param(std::uniform_real_distribution<>::param_type{-0.3, 0.3});
}
private:
std::uniform_real_distribution<> sample;
};
这样您就可以拥有:
// header
extern MyDistribution dist;
// the one cpp file
MyDistribution dist;
另外不要忘记extern
只是声明一个变量。您仍然必须定义它 - 否则您将在未定义的引用sample
上收到链接器错误。
在函数中编写代码
void func()
{
std::uniform_real_distribution<>::param_type Params(-0.3,0.3);
sample.param(Params);
}
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 分布作为全局变量