2012-02-27 21 views

答えて

1

は、単に実行します。あなたのサブクラスもQDataStreamoperator<<(挿入演算子)の独自のオーバーロードを定義している場合を除き

out << *this; 

を明示的にアップキャストする必要は(一般的にそうであるように)ここではありません。

クラスがoperator<<を過負荷に提供していますし、あなたが(例えば、あなたのサブクラスのためのオペレータ< <の実装を支援するために)QPolygonFの挿入演算子を使用する必要がある場合は、あなたが行うことができます:

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

任意の異なるで(QPolygonF)*これと、あなたはstatic_castで何を言いますか? –

+0

私は自分の間違い、QPolygonとQPolygonを分かったと思います。参照として渡すのを忘れました –

+0

@ s093294 static_castはあなたの心を変えて、あなたのクラスがQPolygonFをもう継承しないようにしたので、もっと安全です(例:QPolygonまたは独自のポリゴンタイプ)。そのキャストは失敗し、コンパイラエラーが発生しますが、Cスタイルのキャストは成功し、未定義の動作を引き起こします(おそらく混乱するクラッシュ)。また、ポインタアドレスの代わりに参照を使って作業したいのは、あなたが目標としているものではないと仮定しているポリゴンデータではなくポインタアドレスを出力することです。 – stinky472

関連する問題