c++ - 如何在结构中声明类模板并稍后初始化?
问题描述
我正在尝试对公差叠加进行建模。我制作了一个结构,它包含公差范围Layer
的下限 ( tol[0]
) 和上限 ( )。tol[1]
我想在 and 之间生成一个随机值tol[0]
并将tol[1]
其分配给val
.
我的实现uniform_real_distribution
在结构中声明了类模板并将其初始化main()
,但我在编译过程中遇到错误,这让我认为我不能以这种方式使用类模板。
#include <random>
struct Layer {
double tol[2];
double val;
std::string name;
std::uniform_real_distribution<double> distribution;
};
int main()
{
Layer block;
block.tol[0] = .240;
block.tol[1] = .260;
std::default_random_engine generator;
block.distribution(block.tol[0],block.tol[1]);
block.val = block.distribution(generator);
return 0;
}
我从 g++ 收到以下错误:
error: no match for call to '(std::uniform_real_distribution<double>) (double&, double&)'
block.distribution(block.tol[0],block.tol1[]);
^
我有很多Layer
我创建的结构,所以我希望将分布与结构相关联,但我不确定它是否可能了。
解决方案
在这个阶段,对象已经构造好了,所以你可以这样做:
block.distribution = std::uniform_real_distribution<double>(block.tol[0],block.tol[1]);
也可以直接初始化结构:
Layer block{{.240,.260}, 0, "", std::uniform_real_distribution<double>(.240, .260)};
推荐阅读
- vue.js - Nuxtj - 在身份验证过程后加载用户所有信息的最佳实践
- python - 以升序和逆序打印正整数范围 - Python
- javascript - 意外的令牌 / 在位置 0 Nodejs 的 json 中
- javascript - 我的 javascript 代码有问题 - 计算机必须猜测我输入的数字值
- python - Simpy 获取正在等待资源释放的元素
- emacs - tmux 覆盖 emacs 快捷方式
- php - ( sdonate) 1067 /var/www/donate/install.php 中“过期时间”的默认值无效:
- vuex - 页面加载突变 [Nuxt] [Vuex]
- batch-file - 如何使用批处理文件解压缩 ZIP 存档文件?
- angular - ngx-chips:无法从 autocompleteItems 添加第二个标签