在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C++  Linux/ c++11shared_ptr存儲(chǔ)線程

c++11shared_ptr存儲(chǔ)線程

class t  
{
public:
    vector<shared_ptr<thread> > t1;
public:
    t() 
    {
        for (int i = 0; i < 3; i++) 
        {
            t1.push_back(make_shared<thread>(&t::Func, this)); //(1)
        }
    }
    void Func() 
    {
        cout << " hello world!" << endl;
    }
};

請(qǐng)問為什么在(1)的地方一定要如此初始化呢,
不寫成這樣他的報(bào)錯(cuò)會(huì)是:
t。錯(cuò)誤:ISO c++禁止使用非限定或圓括號(hào)的非靜態(tài)成員函數(shù)的地址來形成成員函數(shù)的指針
是因?yàn)榻怪苯訉⒎庆o態(tài)的類成員函數(shù) t::Func 直接轉(zhuǎn)換到thread類指針么?,
如果是因?yàn)檫@樣那為什么一定要這樣寫呢? 像&(t::Func)也會(huì)報(bào)上面的錯(cuò)

回答
編輯回答
笑忘初

t::Funct的成員函數(shù),有一個(gè)隱藏參數(shù)this,自然要先傳一個(gè)參數(shù)進(jìn)去。。
t1.push_back(make_shared<thread>(&t::Func, NULL)); //(1) 你這么寫也行。。

2017年2月4日 23:08