一段C++代码挑错
class Shape{
public:
virtual void Draw() = 0;
};
class Circle: public Shape
{
int m_x, m_y, m_r;
public:
Circle() { memset(this, 0, sizeof(*this)); }
void SetCenter(int x, int y) { m_x = x; m_y = y; }
void SetRadius(int r) { m_r = r; }
void Draw(bool bFill = false) { ... /* 代码略 */ }
};
... // 其他的一些 Shape 派生类
void wmain()
{
vector<Shape> shapes;
... // 从文件中读入 Shape 数据,并写入 shapes
for (shapes::const_iterator it = shapes.begin();
it != shapes.end(); ++it)
it->Draw();
}
这段代码里哪里错了?
追问:请参考下面程序,说明当使用vector容器时,需要注意哪些类似的问题
void RemoveItem(std::vector<int>& a, int n)
那你能不能看看这段代码问题在哪
{
for (std::vector<int>::iterator it = a.begin(); it != a.end(); ++it)
{
if (*it == n)
a.erase(it);
}
}