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
을하지만 나는이 스마트 포인터가 같은 힙 메모리를 참조와 끝까지, 그리고 현재 범위의 외출 때 충돌 : 그 같은 일을 가리키는 shared_ptr로 인수를 변환 할 수 있습니다. QSignalSpy를 사용할 수 있습니까?
감사합니다.
공유 포인터가 필요합니까? Qt는 자신 만의 "메모리 관리"를 가지고 있기 때문에 공유 포인터와 잘 작동하지 않습니다. 해결 방법으로 클래스에 shared_ptr을 저장하면 메모리를 유지하고 raw-ptr (또는 인덱스)을 사용하여 슬롯에 액세스 할 수 있습니다. – Hayt
예 부모와 함께 QObject가 필요 없지만 여러 스레드와 공유되고 아무도 필요하지 않을 때 삭제되는 내용이 필요합니다. – CanardMoussant
아직 그 사람들과 일 해본 적이 없지만'QSharedPointer'를 살펴볼 수 있습니다. 다른 방법으로는 std 공유 포인터를 Qt와 쉽게 사용하는 방법을 보지 못합니다. – Hayt