我想测试使用带有std :: shared_ptr作为参数的信号/插槽的Qt代码。
我的问题是QSignalSpy类适用于所有其他类型的参数,在使用标准共享指针时似乎不太好用。实际上,takeFirst方法返回一个QVariant列表。我可以将参数转换为shared_ptr做类似的事情:
QVERIFY(arguments.at(0).value<std::shared_ptr<Canard>>() == canardInstance); // verify the first argument
然后我最终得到了两个引用相同堆内存的智能指针,当它超出当前范围时崩溃了。在我的案例中有没有办法使用QSignalSpy?
谢谢!
答案 0 :(得分:1)
其实我完全错过了这一点。它运行正常(意味着引用计数正在按预期工作)但我有另一个原因导致内存损坏。我尝试使用QSharedPointer并获得相同的行为。