<分区>
我不太明白这个错误g++
向我 throw 。
std::exponential_distribution<double> (*)(double)
之间有什么区别?和 std::exponential_distribution<double>*
?
第二个显然是指向 std::exponential_distribution
的指针使用模板参数 <double>
, 但第一个是什么?
这是导致问题的代码:
首先是函数原型(prototype)
simulation(std::mt19937_64 *mt19937_64_pointer,
std::uniform_real_distribution<double> *uniform_real_dis_p,
std::exponential_distribution<double> *exp_dis_p)
{
...
}
调用这个函数的代码:
std::mt19937_64 *gen_p = nullptr; // <-- this used to be: *&gen_p - hence the problem
// Actually it isn't equal to nullptr - this is set elsewhere in the code
std::uniform_real_distribution<double> uniform_real_dis(0.0, 1.0);
std::exponential_distribution<double> exp_dis(1.0);
simulation s(gen_p, &uniform_real_dis, &exp_dis);
这是一个有点奇怪的错误 - 如果我完全理解它的含义,我相信我可以修复它。均匀分布起作用而指数分布不起作用对我来说确实很奇怪?