在我的代码的某些时候,我有:
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);
出了什么问题?
答案 0 :(得分:1)
您需要将原始指针(Qthread *
)传递给moveToThread
。您必须使用unique_ptr::release
(thread.release()
)或unique_ptr::get
(thread.get()
)来获取原始指针,具体取决于您要实现的目标。