请原谅这个C ++新手问题。我想在一个较大的项目中共享一个函数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] 显式类型使用带有定义的辅助* .cpp文件中的std::bind
的std::function
的结果。
#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;