Top*_*sic 0 c++ oop inheritance vector subclass
我有这样的事情:
class A {
void add (A* a) {
//add a to a vector<A*>
}
virtual void draw() = 0;
}
class B : public A {
void tick() {}
void draw() {}
}
class C : public A {
void draw() {}
}
Run Code Online (Sandbox Code Playgroud)
现在我想要做的是这样的循环:
for(int i=0; i<vector.size(); i++) {
vector[i]->tick();
}
Run Code Online (Sandbox Code Playgroud)
问题是,并非此向量中的所有元素都具有该tick()
方法,但我仍然希望将它们放在同一个向量中,因为我还希望能够遍历向量并调用draw()
所有元素.有什么方法可以解决这个问题吗?我正在考虑使用另一种载体,但我宁愿不这样做.
如果你有一个vector
小部件,但只有一些小部件有一个dingbat,它们真的是所有的小部件吗?
在你的情况下,你有vector
一些不一样的东西.这是你的问题.当然,你可以想出一些hacky,复杂的机制,把一艘战舰放在铅笔杯里.或者你可以做我认为合适的事情之一:
正如您已经提到的,上面的数字2正在创建一个单独的向量.数字1可能virtual tick()
与在基类上提供具有空(普通)实现的方法一样简单.