class base
{
public:
virtual void fun_1() { cout << "base-1\n"; }
virtual void fun_2() { cout << "base-2\n"; }
};
class derived : public base
{
public:
void fun_1() { cout << "derived-1\n"; }
void fun_2() { cout << "derived-2\n";
}
};
class caller
{
private:
derived d;
unique_ptr<base> b = make_unique<derived>(d);
public:
void me()
{
b->fun_2(); //? How to do this in thread
// std::thread t(std::bind(&base::fun_2, b), this);
// t.join();
}
};
int main()
{
caller c;
c.me();
return 0;
}
Я написал небольшую программу для совместного изучения умного указателя и виртуальной функции.Теперь я застрял, как я мог бы вызвать b-> fun_2 () в потоке, я не могу изменить базовый и производный класс.Я также должен использовать unique_ptr и не могу перейти на shared_ptr.Также, пожалуйста, объясните сообщение об ошибке, когда вы, если возможно, раскомментируете строку, которую я прокомментировал.