Поделиться автоматически определенной функцией в проекте - PullRequest
0 голосов
/ 20 марта 2020

Пожалуйста, извините за c ++ newb ie вопрос. Я хочу поделиться функцией rnd() в более крупном проекте. Он определяется следующим образом:

#include<random>
#include<functional>

std::mt19937 generator (123);
std::uniform_real_distribution<double> dist(0.0, 1.0);
auto rnd = std::bind(dist,std::ref(generator));

Я пытался поместить приведенное выше определение в заголовочный файл, но получаю ошибки «дубликаты символов» и в отдельный файл. cpp, который выводит меня «неопределенные символы» ошибки.

1 Ответ

0 голосов
/ 06 апреля 2020

Немного копания дало ответ:

1) Явно введите результат std::bind, используя std::function в вспомогательном файле *. cpp с определением.

#include<random>
#include<functional>
std::mt19937 generator (123);
std::uniform_real_distribution<double> dist(0.0, 1.0);
std::function<double (void)> mt_rnd = std::bind(dist,std::ref(generator));

2) Явно объявить функцию в любом другом файле проекта, снова используя std::function

extern std::function<double ()> mt_rnd;
...