創建的shared_ptr
class A
{
....
shared_ptr<std::thread> mThread;
void Step();
void LaunchTrhead();
}
void A::LaunchThread()
{
...
mThread=make_shared<std::thread>(Step); // This line gives an error
...
}
void A::Step()
{
...
}
我試圖初始化共享指針mThread,使其調用該函數步驟。然而,編譯器給我的錯誤「無效的類型的引用的類型的初始化......」類型'未解析的重載函數類型'「的表達式。很顯然,我正在做一些愚蠢的事情,但我不能把它放在手指上。任何人都可以幫忙嗎?提前致謝!
當場!編譯器告訴我(「未解決的功能」),但我只是看不到它,我完全失明(我應該回家......)。另外,根據你所指出的,我可以聲明* Test * static。但是你的解決方案對我而言更實用,因爲它避免了必須將指針傳遞給所有者對象。謝謝! – DrD
您可以直接將指向成員和指向對象的指針傳遞給std :: thread構造函數(以及std :: bind和std :: async):mThread = std :: make_shared(&A :: Step,this);' –
Casey
@Casey不知道,謝謝! – Praetorian