0
信号/スロットをstd :: shared_ptrでパラメータとして使用しているQtコードをテストしたいと思います。QSignalSpyとstd :: shared_ptr
私の問題は、他のすべてのタイプのパラメータでうまく動作するQSignalSpyクラスは、標準の共有ポインタを使用する場合にはうまく動作しないようです。実際、takeFirstメソッドはQVariantのリストを返します。
QVERIFY(arguments.at(0).value<std::shared_ptr<Canard>>() == canardInstance); // verify the first argument
しかし、私は2つのスマートポインタが同じヒープメモリを参照し終わると、現在のスコープの外に行くとき、それはクラッシュ:私はそのようなことをやってのshared_ptrに引数を変換することができます。私の場合、QSignalSpyを使用する方法はありますか?
ありがとうございます!
共有ポインタが必要ですか? Qtはそれ自身の種類の "メモリ管理"を持っているので、共有ポインタとうまく動作しません。回避策としてクラスにshared_ptrを格納することで、メモリを有効にしてraw-ptr(またはインデックス)を使用してスロットにアクセスするようにします。 – Hayt
はい私は親を持つQObjectは望んでいませんが、むしろ何人かのスレッドと共有され、誰もそれが必要ないときに削除されるものです。 – CanardMoussant
私はまだそれらを扱っていませんが、あなたは 'QSharedPointer'を見てみることができます。それ以外の場合は、Qtでstd共有ポインタを簡単に使用する方法はありません。 – Hayt