私は新しいプロジェクトでC++ 11のスマートポインタを使用したいが、問題が発生している。現在の多くのプロジェクトでは、未使用のポインタをそのインタフェースのパラメータとして使用しており、スマートポインタ用のインタフェースはありません。 QMainWindow::setCentralWidget。 C++ 11 Smart PointerとRaw Pointerインタフェースを併用する安全な方法はありますか?
は、一貫性のある形を保つために、私はこのセグメントのようget()
から保存されたポインタを渡す必要があります:
QMainWindow win;
std::shared_ptr<QWidget> scrollArea{ std::make_shared<QScrollArea>() };
// QScrollArea is a derived class of QWidget.
win.setCentralWidget(scrollArea.get());
しかし、私はQtの中の他の方法はscrollArea
の格納されているポインタにオペレータdelete
を実行するかどうかを確認することができません。
Qtのいくつかの方法でメモリリークやその他の問題が発生するのでしょうか?
最新のC++ Standard CDを確認したところ、何も見つかりませんでした。これは未定義の動作だと思われます。
これが未定義の動作で危険な場合は、は生ポインタのインターフェイスでスマートポインタを使用する安全な方法はありますか?
Qtが 'delete'を実行するかどうかわからない場合は、どのようにして現在どのメモリリークもないことを確認しますか? – hmjd
「ポインタを2回削除すると問題が発生しますか?」と尋ねた場合と同じです。 –
@ W.B。私の主な目的は、この場合の解決策を見つけることです。 – UniversE