だからここに状況があります:
レイトレーサープログラムの抽象的なスーパークラス「モデル」があり、そこからさまざまな種類のジオメトリがプロパティと関数を継承します。明らかに、タイプモデルのオブジェクトはありませんが、シーンのジオメトリ全体が格納されるタイプモデルの配列があります。
次に、レイトレーサーによって多数のレイがキャストされます。各光線はこのモデルの配列を反復処理し、独自のメソッドRay::intersectを使用してそれらと衝突するかどうかを確認します。したがって、レイの宣言にはおおよそこれが含まれます。
Point intersect(Sphere sphere) {...}
Point intersect(Cube cube) {...}
Point intersect(Torus torus) {...}
等
問題は、これらのクラスはすべてModelを継承し、配列はmodel型であるため、要素にアクセスするとmodel型になるということです。モデルには交差点がないので、そのような方法がないというエラーほど間違った方法のエラーが発生することはありません。したがって、問題は、各メンバーを適切なタイプにキャストするにはどうすればよいかということです。
これを行うための合理的な方法はありますか、それともオブジェクトごとに各サブクラスを明示的にキャストし、スティックを使用してみる必要がありますか?これは、一般的な問題のように思われることに対して非常にハックのようです。