0

我想测试一段 Qt 代码,它使用带有 std::shared_ptr 作为参数的信号/插槽。

我的问题是,对于所有其他类型的参数都适用的 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 回答