adv*_*ner 4 qt unique-ptr c++11 qscopedpointer
在我的代码中
std::unique_ptr<QNetworkAccessManager> myNetworkAccessManager;
...
myNetworkAccessManager.reset(new QNetworkAccessManager(this));
QObject::connect(myNetworkAccessManager.get(), SIGNAL(finished(QNetworkReply *)), this, SLOT(OnNetworkFinished(QNetworkReply *)));
Run Code Online (Sandbox Code Playgroud)
有问题的代码:connect() 中的myNetworkAccessManager.get ()
我的问题是最好的方法是什么?
我正在阅读这篇文章 ,它在 Legacy Code 下说:
调用 get() 返回一个指向底层方法的指针。如果可以,您真的想避免调用它,因为一旦您将原始指针释放到野外,您就失去了通过切换到 unique_ptr 所获得的许多优势
更新
如果我改成使用如果我使用QScopedPointer,我的代码如下:
QScopedPointer<QNetworkAccessManager> myNetworkAccessManager;
...
myNetworkAccessManager.reset(new QNetworkAccessManager(this));
QObject::connect(myNetworkAccessManager.data(), SIGNAL(finished(QNetworkReply *)), this, SLOT(OnNetworkFinished(QNetworkReply *)));
Run Code Online (Sandbox Code Playgroud)
这会是正确的解决方案吗:
connect(myNetworkAccessManager.data()
Run Code Online (Sandbox Code Playgroud)
更新 2
阅读此链接stackoverflow似乎使用 data() 是正确的解决方案。这意味着使用 stl 中的 get() 也是正确的。
归档时间: |
|
查看次数: |
3684 次 |
最近记录: |