【发布时间】:2016-01-25 20:23:57
【问题描述】:
我不太明白g++ 向我抛出的这个错误。
std::exponential_distribution<double> (*)(double) 和 std::exponential_distribution<double>* 有什么区别?
第二个显然是指向带有模板参数<double> 的std::exponential_distribution 的指针,但第一个是什么?
这是导致问题的代码:
首先是函数原型
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);
这是一个奇怪的错误 - 如果我完全理解它的含义,我相信我可以修复它。均匀分布有效而指数无效对我来说似乎很奇怪?
【问题讨论】:
-
不应该是
std::mt19937_64 *gen_p吗? this compiles -
奇怪的是为什么它可以编译而我的却没有。
-
我删除了
&,您确定要同时使用*和&吗? -
哦,是的 - 大概就是这样
-
是的,它正在工作。
标签: c++ c++11 random standard-library c++-standard-library