Я хотел бы протестировать кусок кода 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 в моем случае?
Спасибо !
На самом деле я полностью упустил суть. Он работал нормально (имеется в виду, что подсчет ссылок работает, как и ожидалось), но я получил повреждение памяти по другой причине. Я попытался использовать QSharedPointer и получить то же поведение.
Других решений пока нет …