智能指针和QThread问题

时间:2016-10-30 02:29:39

标签: c++ multithreading c++11 qt5 c++14

在我的代码的某些时候,我有:

QThread* thread = new QThread;
Beacon *beacon = new Beacon(beg, end);
beacon->moveToThread(thread);

前几天我正在读这个叫智能指针的东西。如果我理解,它可能符合上述代码的和平,我试过:

std::unique_ptr<QThread> thread {new QThread};
std::unique_ptr<Beacon> beacon {new Beacon(beg, end)};
beacon->moveToThread(thread);

这导致:

error: no viable conversion from 'std::unique_ptr<QThread>' to 'QThread *'
    beacon->moveToThread(thread);

出了什么问题?

1 个答案:

答案 0 :(得分:1)

您需要将原始指针(Qthread *)传递给moveToThread。您必须使用unique_ptr::releasethread.release())或unique_ptr::getthread.get())来获取原始指针,具体取决于您要实现的目标。