我是C ++的新手,我想参与我的第一个教程。
我想编写一个程序,该程序将在表示图形符号的对象列表上实现搜索。
列表包含由两个边长度描述的矩形和由半径描述的圆。
我还想创建一个搜索过程,它接受列表和矩形边长,并返回另一个列表,其中只包含适合给定矩形的符号。
列表(和搜索功能)的实现应该允许 扩展接受的符号列表(例如添加多边形)而不进行修改 任何现有的代码。
我应该遵循什么样的方法?你能给我一个与我的目标相似的例子吗?
答案 0 :(得分:2)
这是多态的用途 - 您将拥有import web
class hello:
def GET(self, name):
return 'Hello'
urls = ('/Hello(.*)', 'hello')
app = web.application(urls, globals())
app.run()
或std::vector<Object*>
来保存对象列表。
对象应该基本上如下所示:
std::vector<std::shared_ptr<Object>>
当然class Object
{
public:
virtual ~Object() = default;
// needs to be implemented by deriving classes i.e. Rectangle and Circle
virtual bool fitsIn(Rectangle const& r) const = 0;
};
和Rectangle
会从中继承:
Circle
然后你就可以将它添加到列表中,遍历并在每个元素上调用class Rectangle : public Object
{
int x, y, w, h;
public:
Rectangle(int x, int y, int w, int h) : x(x), y(y), w(w), h(h) {}
virtual bool fitsIn(Rectangle const& r) const override
{
// return whether can fit in r based on this object's and r's x, y, w and h
}
};
,根据fitsIn
返回的内容将其推送到另一个向量:
fitsIn