我正在尝试对公差叠加进行建模。我制作了一个结构Layer
,该结构保留公差范围的下限(tol[0]
)和上限(tol[1]
)。我想在tol[0]
和tol[1]
之间生成一个随机值,并将其分配给val
。
我的实现在结构中声明了uniform_real_distribution
类模板,并在main()
中对其进行了初始化,但是我在编译过程中遇到错误,使我觉得我不能以这种方式使用类模板。 / p>
#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
结构,因此我希望将发行版与struct相关联,但是我不确定是否有可能。
答案 0 :(得分:0)
在此阶段,对象已被构造,因此您可以执行以下操作:
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)};