Я не совсем понимаю, эта ошибка g++
бросает на меня.неизвестное преобразование для аргумента из 'std :: exponential_distribution <double> (*) (double)' to 'std :: exponential_distribution <double> *'
В чем разница между std::exponential_distribution<double> (*)(double)
и std::exponential_distribution<double>*
?
Второй, очевидно, является указателем на std::exponential_distribution
с аргументом шаблона <double>
, но что является первым?
Вот код, который вызывает проблему:
Во-первых, функция прототипа
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] (http://melpon.org/wandbox/permlink/DG17fzRlmKLjoOpF) –
Странно, почему компиляция и мой нет. – user3728501
Я удалил '&', вы уверены, что хотите как '*', так и '&'? –