문제

현재이와 같이 있습니다 :

QSharedPointer<t> Qsharedfoo;
.

이제 Foo에 대한 원시 포인터가 rawfoo라고 불리는 것입니다.Foo Point를 원시 포인터를 소유하고 포인터를 가리키는 방법은 무엇입니까?우리가 boost::make_shared를 사용할 수있는 공유 포인터로 부스트를 알고 있습니다. QSharedPointer로 어떻게합니까?

나는 이렇게하고 싶습니다 :

Qsharedfoo = rawfoo
.

도움이 되었습니까?

해결책

foo point를 원시 포인터를 소유하고 그것을 가리키는 것을 시작할 수 있습니다.공유 포인터로 부스트를 알고 있습니다. Boost :: make_shared QsharedPointer로 어떻게 작동합니까?

불행히도 할 수 없습니다.

  • 항상 make_shared와 달리 생성자를 통과해야합니다.

  • 반드시 안전한 것은 아닙니다.

요약에서 생성자와 연산자= 다음과 같이 :

Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload
.

또는 포인터에 대한 참조가 이미있는 경우 재설정 () 메소드 다음과 같이 :

Qsharedfoo.reset(rawFoo);
.

그러나 처음에는 언급했듯이, 이들은 당신이 찾고있는 것과 동일한 작업이 아닙니다.

다른 팁

Qt 문서 에서 직선으로이 :

QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject);
.

기본적으로 동일한 방식으로 포인터를 전달할 수 있습니다.

// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top