【发布时间】:2016-12-10 21:47:47
【问题描述】:
我有一个包含一个基类和两个派生类的继承层次结构。
在基类中,我有一个虚函数:
virtual void interact(const Base &other) const;
在派生类中,它们都具有以下两个功能,这是必要的,因为这两个派生类之间的交互方式不同(即Derived1 和Derived1 的交互方式与Derived1 和Derived2 的交互方式不同):
void interact(const Derived1 &other) const;
void interact(const Derived2 &other) const;
我希望能够从vector<Base> 中获取两个对象并调用虚拟Base 类方法(例如base1.interact(base2))并在派生类中根据派生类型调用正确的函数。
有什么办法可以做到这一点,还是我的方法完全错误?
【问题讨论】:
-
该技术被称为“双重调度”,有多种实现方式。
-
同一个向量中的两个对象显然属于同一类型(向量的定义)。 “能够从一个向量中获取两个对象”很容易,但它们都是相同的类型。这似乎不是你的计划。我建议不要向下投射。
标签: c++ inheritance virtual-functions