我想做的是我有一个清单std::list<Displayable> display_queue
Displayable 定义Displayable.h
为:
class Displayable {
public:
int x, y;
Displayable() : x(0), y(0) {}
Displayable(int x, int y) : x(x), y(y) {}
};
并且DifferentDisplayable
作为:
class DifferentDisplayable : public Displayable {
public:
std::string id;
DifferentDisplayable() : Displayable(), id("") {}
DifferentDisplayable(int x, int y) : Displayable(x, y), id("") {}
DifferentDisplayable(int x, int y, std::string id) : Displayable(x, y), id(id) {}
};
添加到列表中的项目是:
Displayable disp_one;
DifferentDisplayable disp_two(10, 10, "the id");
display_queue.push_back(disp);
display_queue.push_back(disp_two);
由于DifferentDisplayable
派生自Displayable
它可以存储在列表中,但我无法弄清楚的是,当迭代列表(display_queue)时,我如何或什至可以访问std::string id
,DifferentDisplayable
如下所示:
for (std::list<Displayable>::iterator i = display_queue.begin(); i != display_queue.end(); i++) {
// insert code here
}
提前感谢您的任何答案