基本的に、 と呼ばれる基本クラスと、Geometry
、 などの派生クラスがあります...Point
Polygon
Geometry
次のようなメソッド交差を実装します。
Geometry* intersection(Geometry* other)
{
Geometry* inter = compute_intersection(this, other);
if (inter is a polygon)
return new Polygon(inter);
if (inter is a point)
return new Point(inter);
}
プログラムで 2 つのジオメトリの交差を計算すると、 が得られ、それが実際に何であれそれを計算Geometry*
できます。dynamic_cast
良いデザインですか?私が間違っていると思うのは、交差を計算し、結果を dynamic_cast するたびに実数型をチェックしなければならないことです (これは遅くなる可能性があります)。しかし、主な問題は、この設計では、Geometry
その派生物 (ポイント、ポリラインなど) を知っている必要があることです。
これらの問題を回避するための良い解決策は何ですか?