在我的代码中
std::unique_ptr<QNetworkAccessManager> myNetworkAccessManager;
...
myNetworkAccessManager.reset(new QNetworkAccessManager(this));
QObject::connect(myNetworkAccessManager.get(), SIGNAL(finished(QNetworkReply *)), this, SLOT(OnNetworkFinished(QNetworkReply *)));
有问题的代码:myNetworkAccessManager.get() in connect()
我的问题是最好的方法是什么?
我正在阅读此处的文章文章 ,它在旧代码下说:
调用 get() 返回一个指向底层方法的指针。如果可以的话,您真的想避免调用它,因为一旦您将原始指针释放到野外,您就失去了通过切换到 unique_ptr 获得的大部分优势
更新
如果我将其更改为使用如果我使用 QScopedPointer,我的代码将如下所示:
QScopedPointer<QNetworkAccessManager> myNetworkAccessManager;
...
myNetworkAccessManager.reset(new QNetworkAccessManager(this));
QObject::connect(myNetworkAccessManager.data(), SIGNAL(finished(QNetworkReply *)), this, SLOT(OnNetworkFinished(QNetworkReply *)));
那么这是否是正确的解决方案:
connect(myNetworkAccessManager.data()
更新 2
阅读此链接stackoverflow似乎使用 data() 是正确的解决方案。这意味着从 stl 使用 get() 也是正确的。