标准矩形类

时间:2010-04-14 23:59:36

标签: c++

我有一个项目,它有一个GUI(用QT编写)和一个命令行版本。我使用了QT中包含的矩形类:QRect。我想打破命令行版本对QT的依赖,所以我需要一个支持交集和联合的插入式矩形类。我可以写一个,但如果可能,我宁愿包括一个。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您要找到一个要包括的内容,它可能是另一个依赖项的一部分。所以你最好的办法是尝试自己写。现在是练习制作模板类的好时机。 :)

template <typename T>
struct point
{
    // or maybe you'd prefer to make these private
    T x;
    T y;
};

template <typename T>
struct rectangle
{
public:
    typedef point<T> point_type;

    bool contains(const point_type& pPoint)
    {
        return !(pPoint.x < topleft.x) && (pPoint.x < bottomright.x) && 
                !(pPoint.y < topleft.y) && (pPoint.y < bottomright.y);
    }

    T width(void) const
    {
        return bottomright.x - topleft.x;
    }

    // and more stuff

    // or maybe you'd prefer to make these private, nor
    // is this the only way to represent a rectangle.
    point_type topleft;
    point_type bottomright;
};

对不起,这不是你期待的答案。


关于你的设计,我希望你没有使用你的GUI版本,执行副本,然后将其修改为控制台版本。更好的是建立一个图书馆;然后,GUI与控制台仅仅是演示问题。