【发布时间】:2020-02-13 05:41:12
【问题描述】:
我有以下功能:
template <class T>
void programManager(std::shared_ptr<BaseStrategy<T>> st,std::shared_ptr<SMDSSubscriber<T>> md){some code}
它是 std::thread 的可调用函数
bac 声明为:
std::shared_ptr<BaseStrategy<EZXOrderEventHandler>> bac = make_shared<BacStrategy<EZXOrderEventHandler>>
和 md 声明为:
std::shared_ptr<SMDSSubscriber<EZXOrderEventHandler>> dataMarket = make_shared<SMDSSubscriber<EZXOrderEventHandler>>();
std::thread t2(&programManager,bac,dataMarket);
我得到了错误:
错误:没有匹配函数调用‘std::thread::thread(, std::shared_ptr >&, std::shared_ptr >&)’ std::thread t2(&programManager,bac,dataMarket);
注意:候选:模板 std::thread::thread(_Callable&&, _Args&& ...) 线程(_Callable&& __f, _Args&&... __args)
模板参数推导/替换失败:
/home/yaodav/Desktop/git_repo/test/main.cpp:347:54:注意:无法推断模板参数'_Callable'
std::thread t2(&programManager,bac,dataMarket);
【问题讨论】:
-
std::thread t2(programManager<EZXOrderEventHandler>,bac,dataMarket);工作吗? -
解决问题谢谢