【发布时间】:2013-05-05 12:57:40
【问题描述】:
这是一个困扰我一段时间的问题,但找不到最好的解决方法。我试图通过一个例子来说明这一点。
我正在开发一个包含许多类的图形库。一些类之间是“part of”的关系,比如这 3 个类:
namespace MyGraphicsLibrary
{
class MatrixStack
{
};
class Transform
{
MatrixStack mMatrixStack;
};
class Renderer
{
Transform mTransform;
};
}
Renderer 类是供用户使用的,但我不希望他们在查找 MyGraphicsLibrary 时看到 Transform、MatrixStack 类。最后两个类仅供Renderer类使用,不供用户使用。
我在这里尝试做两件事:
对用户隐藏
Transform、MatrixStack类。反映类的“part-of”层次结构。
我尝试了以下方法来解决这个问题:
-
1234563以下帖子实际上让我不确定这是一个好的解决方案:Pros and cons of using nested C++ classes and enumerations?
-
我尝试将
Transform、MatrixStack放入另一个名为Private的命名空间中。因此,查找MyGraphicsLibrary命名空间的用户会看到Private命名空间仅涵盖所有不适合用户的类。 这很好,但是还有很多其他类有同样的问题,我很快用彼此无关的类填充Private命名空间。 在这里我只能想出丑陋的解决方案,比如引入嵌套命名空间:namespace MyGraphicsLibrary { //private classes belonging to Renderer class namespace PrivateRenderer { class MatrixStack { }; class Transform { MatrixStack mMatrixStack; }; } //public classes for users class Renderer { Transform mTransform; }; }
也许我在这里错过了一些东西,但你认为哪一个是要走的路。 有人有第三种方式吗?
【问题讨论】:
标签: c++