【发布时间】:2012-06-14 05:41:36
【问题描述】:
我想在实际声明 CDocument 之前从另一个名为 CDocument 的类继承一个名为 CSprite 的类,因为 CDocument 类的某些成员实际上是 CSprite。我希望它看起来不会令人困惑?这是我的代码:
class CSprite: public CDocument {}
class CDocument
{
public:
CDocument();
~CDocument();
CSprite * AddSprite(string Name);
CSprite * GetSprite(string Name);
};
我收到“未定义的基类”错误。我想知道这可能根本不可能。是吗?我这样做的原因是增加我的代码可读性。每个文档都可以有许多精灵。精灵实际上是可以在其中包含其他精灵的文档。
【问题讨论】:
-
文档与精灵有何不同?您是否考虑过为文档和精灵创建一个接口并从这个抽象基础继承?另外,为什么不对包含的精灵使用标准容器,例如矢量。
-
Sprites 与 Documents 完全相似。实际上我使用矢量容器进行存储。 CDocument 只是一个使事情变得更容易并增加代码语义和可读性的包装器。抽象类是一个绝妙的主意。我想知道为什么我一开始没有考虑到它?!无论如何,谢谢你的评论。
标签: c++ inheritance derived-class