2012-02-27 2 views

답변

1

는 간단하게 수행 서브 클래스는 QDataStreamoperator<< (삽입 연산자)의 자신의 과부하를 정의하지 않는 한 여기에 명시 적으로 업 캐스팅에 대한 필요 (경우에 일반적으로) 없다

out << *this; 

.

하는 클래스가 operator<< 과부하 당신이 (당신의 서브 클래스에 대한 연산자 < <을 구현할 수 있도록하기 위해, 예를 들어) QPolygonF의 삽입 연산자를 사용할 필요가 제공 않으면, 당신은 할 수 있습니다 :

out << static_cast<const QPolygonF&>(*this); 
+0

의 모든 다른를 (QPolygonF) * this와 static_cast에서 언급 한 내용은 무엇입니까? –

+0

내 실수를 알아 냈다고 생각해. QPolygon & QPolygon. 참조로 전달하는 것을 잊어 버렸습니다 –

+0

@ s093294 static_cast는 마음이 바뀌어 클래스가 QPolygonF를 더 이상 상속받지 못하게 만들었습니다 (예 : QPolygon 대신 또는 자신의 다각형 유형). 그런 다음이 캐스팅은 실패하고 컴파일러 오류가 발생하지만 C 스타일 캐스팅은 성공하고 정의되지 않은 동작 (아마도 혼란스러운 충돌)을 호출합니다. 또한 네, 포인터 대신 포인터 대신 포인터를 사용하여 포인터 주소를 출력하는 것이 아니라면 여기에서 참조로 작업하고 싶습니다. – stinky472