Я пытаюсь смоделировать набор допусков.Я создал структуру Layer
, которая содержит нижний предел (tol[0]
) и верхний (tol[1]
) предел диапазона допуска.Я хочу сгенерировать случайное значение между 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[]);
^
IУ меня довольно много Layer
структур, которые я создаю, поэтому я надеялся связать дистрибутив со структурой, но я не уверен, что это возможно.