我有一个名为“block”的类,它从名为“MainObject”的类继承。调用列表中的子对象
然后我创建了一个列表并添加“块”。我也使用迭代器来循环;
std::list<MainObject> objList;
objList.push_back(block());
std::list<MainObject>::iterator p = objList.begin();
但是当我循环思考列表我只能调用MainObject的函数。 这是我的循环
for (p = objList.begin(); p != objList.end(); p++){
p->Update();
}
当你迭代你的'objList'时,你怎么知道你是在处理一个'block'还是'MainObject'?如果你想要一个块列表,为什么不声明你的列表? 'std :: list'。你需要提供更多的上下文。 –
Julian
2015-01-20 19:26:44
这是因为我想添加更多的对象类型到列表中。所有对象都有一个Update函数,必须在每一帧都调用它。 – SaschaDeWaal 2015-01-20 19:39:16
马特的回答下面应该做你需要的。有了最近评论中的额外信息,请注意,如果'MainObject'具有** virtual **'Update'方法,则不再需要强制转换,并且只需执行'p-> Update()'。 – Julian 2015-01-20 19:50:22