我不太理解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);这是一个有点奇怪的错误-如果我完全理解了它的含义,我相信我可以修复它。对我来说,均匀分布是有效的,而指数分布是无效的,这似乎很奇怪。
发布于 2015-10-27 01:02:52
您已经从注释中得到了答案,但仅供记录,std::exponential_distribution<double> (*)(double)是一个函数指针类型:一个接受一个double并返回一个std::exponential_distribution<double>的函数。
https://stackoverflow.com/questions/33350790
复制相似问题