这是一个困扰我一段时间的问题,但找不到最好的解决方法。我试图通过一个例子来说明这一点。
我正在开发一个包含许多类的图形库。一些类是彼此之间的“部分”关系,比如这 3 个类:
namespace MyGraphicsLibrary
{
class MatrixStack
{
};
class Transform
{
MatrixStack mMatrixStack;
};
class Renderer
{
Transform mTransform;
};
}
该类是供用户使用的,Renderer
但我不希望他们在查找. 最后两个类仅供上课使用,不供用户使用。Transform
MatrixStack
MyGraphicsLibrary
Renderer
在这里,我正在尝试做两件事:
对用户隐藏
Transform
,MatrixStack
类。反映类的“部分”层次结构。
我尝试了以下方法来解决这个问题:
对我来说最好的解决方案是私有嵌套类,因为它会向用户显示嵌套类是私有的,并且如果您只查看
Renderer
类声明,它也会反映层次结构。以下帖子实际上让我不确定这是一个好的解决方案: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; }; }
也许我在这里错过了一些东西,但是你认为哪一个是要走的路。有人有第三种方法吗?