C ++类互相使用

时间:2017-02-09 15:58:01

标签: c++ inheritance header-files

有时在课堂设计中我遇到了班级组织的问题。例如,我有一个Shape类,它是所有类型形状的抽象基类:矩形,多边形,圆形等:

Shape.h

#pragma 

class Rectangle;

class Shape {
    public:
        Shape();
        ...

        virtual Rectangle boundingRectangle() const = 0;
};

我有一个来自Rectangle的{​​{1}}类:

Shape

Rectangle.h

使用此类方法的明显问题是我无法在#pragma once #include "Shape.h" class Rectangle : public Shape { public: Rectangle(); ... Rectangle boundingRectangle() const; }; 中转发声明Rectangle。我知道的唯一解决方案是在Shape.h RectangleShape包含Shape.h之后立即声明Rectangle.h(例如,请参阅QGeoShape和QGeoRectangle {{3} })。

当你需要在Shape.h类声明中使用从Shape继承的几个类(例如virtual Circle Shape::boundingCircle() const)时,上面的解决方案有一些缺点。也许有人知道另一种解决方案?

0 个答案:

没有答案