CPP11shared_ptr storage thread

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

Why does it have to be initialized in this way in (1)? if
is not written in this way, his error will be:
t. Error: ISO cPP forbids the use of unqualified or parenthesized addresses of non-static member functions to form pointers to member functions
because it forbids direct conversion of non-static class member functions t::Func to thread class pointers,
if so, why do you have to write it this way? People like & (t::Func) will also report the above error

.
Mar.30,2021

t::Func is a member function of t . There is a hidden parameter this . Naturally, you have to pass a parameter in first.
t1.push_back (make_shared < thread > (& t thread function, NULL)); / / (1) you can write it that way.

Menu