在项目中共享自动定义的功能

问题描述 投票:0回答:1

请原谅这个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文件中,这会给我带来“未定义符号”错误。

c++11 header-files auto
1个回答
0
投票

一点点挖掘就得出答案:

1] 显式类型使用带有定义的辅助* .cpp文件中的std::bindstd::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;
© www.soinside.com 2019 - 2024. All rights reserved.