![]() |
1
3
我将使类图不同:抽象基类
|
![]() |
2
2
我会用
double dispatch with Visitor pattern
. 那么你只需要有两个指向
|
![]() |
3
1
(更新以匹配更新的问题) 为了避免重复,在一个助手函数中移动转换代码,并让C++完成剩下的工作:
|
![]() |
4
0
你能做些简单的事吗? if (g1->type == LINE) { if (g2->type == LINE) return g1->distance(g2->l); if (g2->type == POINT) ... } else ... 您可以在C++中实现这一部分,并通过外部“C”来公开该函数。 然后,您可以在几何类中提供一种方法来接受几何结构作为参数,并使用常规C++函数重载在类内执行调度。 |