私のコードでは
std::unique_ptr<QNetworkAccessManager> myNetworkAccessManager;
...
myNetworkAccessManager.reset(new QNetworkAccessManager(this));
QObject::connect(myNetworkAccessManager.get(), SIGNAL(finished(QNetworkReply *)), this, SLOT(OnNetworkFinished(QNetworkReply *)));
問題のコード: connect() のmyNetworkAccessManager.get( )
私の質問は、それを行う最良の方法は何ですか?
私はここの記事を読ん でいて、レガシーコードの下に書かれています:
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
この link stackoverflowを読むと、 data() を使用することが正しい解決策のようです。つまり、stl から get() を使用することも正しいということです。