我有这样的事情:
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() {}
}
现在我想做的是有一个这样的循环:
for(int i=0; i<vector.size(); i++) {
vector[i]->tick();
}
问题是不是这个向量中的所有元素都有tick()
方法,但我仍然希望它们在同一个向量中,因为我还希望能够循环遍历向量并调用draw()
所有元素。有没有办法解决这个问题?我正在考虑使用另一个向量,但我不想这样做。