0

パラメータとして std::shared_ptr を使用してシグナル/スロットを使用している Qt コードをテストしたいと思います。

私の問題は、他のすべてのタイプのパラメーターでうまく機能する QSignalSpy クラスが、標準の共有ポインターを使用する場合にはうまく機能しないように見えることです。実際、takeFirst メソッドは QVariant のリストを返します。次のようにして、引数を shared_ptr に変換できます。

QVERIFY(arguments.at(0).value<std::shared_ptr<Canard>>() == canardInstance); // verify the first argument

しかし、その後、同じヒープ メモリを参照する 2 つのスマート ポインターになり、現在のスコープから出るとクラッシュします。私の場合 QSignalSpy を使用する方法はありますか?

ありがとう !

4

1 に答える 1

1

実は私はポイントを完全に見逃していました。正常に動作していました (参照カウントが期待どおりに動作していることを意味します) が、別の理由でメモリが破損しました。QSharedPointer を使用してみましたが、同じ動作が得られました。

于 2016-09-12T12:54:02.967 に答える