이 QSharedPointer이, 내가 확인할 수 있습니다 내가 작성해야 그들이이확인 내가 두 QSharedPointer이 동일한 데이터
QSharedPointer1 == QSharedPointer2
또는 같은 운영자 ==를 사용하여 동일한 개체에 대한 지적이다
QSharedPointer1.data() == QSharedPointer2.data()
포인터에 저장된 객체는 연산자 ==를 오버로드했습니다.
이 QSharedPointer이, 내가 확인할 수 있습니다 내가 작성해야 그들이이확인 내가 두 QSharedPointer이 동일한 데이터
QSharedPointer1 == QSharedPointer2
또는 같은 운영자 ==를 사용하여 동일한 개체에 대한 지적이다
QSharedPointer1.data() == QSharedPointer2.data()
포인터에 저장된 객체는 연산자 ==를 오버로드했습니다.
: PTR1에 의해 참조 포인터가 PTR2에 의해 참조와 같은 포인터 인 경우
bool operator==(const QSharedPointer<T>& ptr1, const QSharedPointer<X>& ptr2)
true를 반환합니다.
첫 번째 버전은 OK here
bool operator== (const QSharedPointer<T> & ptr1, const QSharedPointer<X> & ptr2)
반환 PTR1에 의해 참조 포인터가 PTR2에 의해 참조와 같은 포인터의 경우는 true 관련되어야한다. QSharedPointer class reference에서
당신은 operator==
사용해야
부울 연산자 == (CONST QSharedPointer이 & PTR1, const를 QSharedPointer & PTR2가)
반환 PTR1에 의해 참조 포인터가 동일한에 해당하는 경우 ptr2가 참조하는 포인터. ptr2의 템플릿 매개 변수가 ptr1과 다른 경우 QSharedPointer는 포인터가 비교되도록 자동 static_cast를 수행하려고 시도합니다. ptr2의 템플릿 매개 변수가 이 아니거나 ptr1의 파생 형식이 아니면 컴파일러 오류가 발생합니다.
그래서,이 data()
방법을 통해 포인터를 가져올 필요가 없으며, + 그것은 템플릿 인수와 일치하는 static_cast
을 시도합니다.
또한 포인터에 저장된 객체에 operator==
이 오버로드 되어도 상관이 없습니다. 여기서 포인터를 비교하는 것 뿐이며 포인터 유형에 operator==
이 정의되어 있습니다. 내가 "관련 비 통지를하지 않았다
if(*ptr1 == *ptr2)
// ...
을 또는 : 당신이 포인터를 참조하는 개체를 비교하려는 경우, 당신은 역 참조 포인터에와 (
T::operator==
메소드를 호출) 객체에 대한 참조를 비교해야 회원들 ". 얼마나 부끄러운 .. 감사합니다. – Littlebitter