新しいプロジェクトで C++11 スマート ポインターを使用したいのですが、問題が発生しました。現在の多くのプロジェクトでは、インターフェイスのパラメーターとして生のポインターをまだ使用しており、 QMainWindow::setCentralWidgetなどのスマート ポインター用のインターフェイスはありません。
型の一貫性を保つために、次のget()
ようなセグメントから格納されたポインターを渡す必要があります。
QMainWindow win;
std::shared_ptr<QWidget> scrollArea{ std::make_shared<QScrollArea>() };
// QScrollArea is a derived class of QWidget.
win.setCentralWidget(scrollArea.get());
delete
しかし、Qt の他のメソッドがの格納されたポインターに対して演算子を実行するかどうかはわかりませんscrollArea
。
Qt の一部のメソッドがそれを行うと、メモリ リークやその他の問題が発生しますか?
最新のC++ 標準 CDをチェックしましたが、何も見つかりませんでした。未定義の動作のようです。
これを行うことが未定義の動作であり危険である場合、生のポインターのインターフェイスでスマートポインターを安全に使用する方法はありますか?