【发布时间】:2014-11-07 18:29:30
【问题描述】:
所以我有一个包含组件抽象类指针的向量
假设我有 2 个从组件继承的类 foo 和 bar ,有没有办法从这里获取类型为“foo”的指针向量?
vector<Component*> components;
class foo : Component;
class bar : Component;
components.push_back(new foo());
components.push_back(new bar());
谢谢。
【问题讨论】:
-
这似乎是糟糕的设计,但这只是我的看法。
-
每个组件的工作与另一个完全不同,它们几乎没有任何共同点……持有者类循环遍历所有组件并调用它们的所有虚拟方法。这是我能想到的最好方法
-
我不知道你想做什么,但通常,依赖于类的行为应该实现为虚函数(多态)。如果您希望该机制是可扩展的(在不涉及具体组件的情况下随着时间的推移添加新功能/操作),请考虑 visitor 模式。
-
我真的不打算扩展它,Component 类有一个 Start ,一个 Update 和一个 Render 虚函数,仅此而已。
标签: c++ pointers inheritance vector