次のようなものがあるとします。
class Point : geometry {
...
Point(double x, double y) {
}
double distanceTo(Line) {
}
double distanceTo(Point) {
}
}
class Line : geometry {
...
Line(double x, double y, double slopex, double slopey) {
}
double distanceTo(Line) {
}
double distanceTo(Point) {
}
}
struct point_t {
double x, y;
}
struct line_t {
double x, y, slope_x, slope_y;
}
struct Geom_Object_t {
int type;
union {
point_t p;
line_t l;
} geom;
}
次のような関数のディスパッチテーブルを定義する最良の方法は何だろうと思っています
double distanceTo(Geom_Object_t * geom1, Geom_Object_t * geom2) {
}
クラスは C++ で記述されていますが、distanceTo 関数と構造体は C に拡張する必要があります。
ありがとう