【发布时间】:2019-02-07 12:21:01
【问题描述】:
我有一个层次结构,例如:
Element
|_Resitance
|_DC Voltage Source
|_AC Voltage Source
|_AC Current Source
|_DC Current Source
|_DynamicElement
| |_Inductor
| |_Capacitor
|_SwitchingDevices
| |_Switch
| |_Diode
.
.
.
由于我的输入可以是其中的任何列表,因此它们都插入到std::vector<Element*> 中。问题是二极管、开关和电压源有一个我必须访问的 ID 成员。
当我确定 Element 是具有此类成员的子类时,我希望能够运行 *(*Element).ID 或类似的东西。
我真的不想在 Element 类中包含 ID 成员,因为这种情况会经常发生,因为该类会有很多不合适的成员。
【问题讨论】:
-
所以你想downcast
Element*到例如Switch*? -
我不熟悉这个术语,就我所读到的而言,是的。我可以用新类创建一个新指针,然后销毁该指针。
标签: c++ inheritance abstract-class