我想在实际声明CDocument之前从另一个名为CDocument的类继承一个名为CSprite的类,因为CDocument类的某些成员实际上是CSprite。我希望它看起来不会令人困惑?这是我的代码:

class CSprite: public CDocument {}

class CDocument
{
public:
    CDocument();
    ~CDocument();

    CSprite * AddSprite(string Name);
    CSprite * GetSprite(string Name);
};

我收到“基类未定义”错误。我想知道这根本不可能。是吗?我这样做的原因是提高了代码的可读性。每个文档可以具有许多精灵。 Sprite实际上是可以在其中包含其他Sprite的文档。

最佳答案

由于CDocument.AddSprite / GetSprite都返回CSprite指针,因此您可能只需要声明文档中CSprite的存在。

//declare CSprite
class CSprite;

class CDocument
{
public:
    CDocument();
    ~CDocument();

    CSprite * AddSprite(string Name);
    CSprite * GetSprite(string Name);
};

您可以稍后在此文件或另一个文件中定义CSprite,这时您应该可以继承CDocument。尽管如果遇到更多问题,您可能需要重新设计对象结构。
//CSprite Class
class CSprite : public CDocument
{
    ...
};

10-04 16:58