当前位置:编程学习 > C/C++ >>

一段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);
    }
}

那你能不能看看这段代码问题在哪
答案:
你的Shape类有一个纯虚函数,在从Shape类派生的Circle类必须实现Draw这个函数,你的Circle是有一个Draw但是他带了一个缺省的参数和基类Shape的Draw产生歧义,把Circle中的Draw这个函数的参数删掉就可以了

上一个:c++学习买什么书?
下一个:急!求c++代码...

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,