我的问题是关于编程技术或设计模式的。假设几个派生自 base 的类包含一个纯虚方法,该方法应该在它们之间进行一些交互。
例如,Rectangle
、Ellipse
、Triangle
和 Line
- 全部派生自 Shape
。这个抽象类 Shape
包含 virtual bool Intersects(Shape* another) = 0
。
It seems, 我需要进行六个实现,对吧(顺便说一句,在这个特定示例中有更好的解决方案吗?)。
目前我不知道任何其他示例。
也许我在谈论一个众所周知的事情,我几乎可以肯定有一些名字描述了这项技术。但是,我什至不知道输入什么才能在互联网上找到它。
好吧,你能告诉我如何实现这样的东西吗(我仍然想知道是否需要任何辅助方法,或者,也许是 RTII
的 dynamic_cast
? ) 或指出有关它的一些来源(艺术、教程或其他)?
最佳答案
这是double dispatch的课本示例,wikipedia文章对问题和解决方案给出了很好的描述:
http://en.wikipedia.org/wiki/Double_dispatch
如果我没记错的话,在 Andrei Alexandescu 的“现代 C++ 设计”一书中有一个非常优雅的问题解决方案
http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315
关于c++ - "Multiplicity of implementation"- 如何处理?什么 's the ' name' 这样的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150982/