C++11 将shared_ptr作为参数传递给线程函数会导致错误

C++11 将shared_ptr作为参数传递给线程函数会导致错误,c++11,shared-ptr,ref,C++11,Shared Ptr,Ref,我正在尝试做如下类似的事情: std::shared_ptr<asengine::PreCompileConfig> precompileconfigobj = std::make_shared<asengine::PreCompileConfig>(); std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, precompileconfigobj)); 但这仍然不能解决问题。如果您能帮我解决这个问题,我

我正在尝试做如下类似的事情:

std::shared_ptr<asengine::PreCompileConfig> precompileconfigobj = std::make_shared<asengine::PreCompileConfig>();

std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, precompileconfigobj));

但这仍然不能解决问题。如果您能帮我解决这个问题,我们将不胜感激。

我想我已经解决了这个问题。我必须传递要调用线程函数的对象

std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, precompileobj, std::ref(precompileconfigobj));

显示
RunRsyncDb
方法的声明。我猜它是
静态的
那么您不需要将
预编译配置文件作为参数传递。@rafix07 void RunRsyncDb(const std::shared\u ptr&shptr precompileconfig,const std::shared\u ptr&slog);
std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, std::ref(precompileconfigobj));
std::thread rsync_t(&asengine::PreCompile::RunRsyncDb, precompileobj, std::ref(precompileconfigobj));