账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    c++11shared_ptr存储线程
    40
    0
    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;
        }
    };

    请问为什么在(1)的地方一定要如此初始化呢,
    不写成这样他的报错会是:
    t。错误:ISO c++禁止使用非限定或圆括号的非静态成员函数的地址来形成成员函数的指针
    是因为禁止直接将非静态的类成员函数 t::Func 直接转换到thread类指针么?,
    如果是因为这样那为什么一定要这样写呢? 像&(t::Func)也会报上面的错

    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部