我有一组类来实现,我打算做下列方式:堆叠多个前置声明
(1)的主头文件(entity.h),有这些类封装在命名空间即的所有前向声明:
namespace SomeNameSpace {
class A;
...
class E;
}
(2)每一类然后有单独的头文件(即AH,BH),它定义的类,并声明所有构成变量和方法。
(3)最后,定义了所有成员和静态的.cpp(即A.cpp,B.cpp)。
现在,我试图通过做#include "entity.h"
来实现这个方案,但是当我尝试使用这些类中的一个时,我被打上了一个“模棱两可”的错误。如果我跳过步骤(1)并简单地包括每个类的所有个人头文件,那么我就没有这个问题(这就是我一直在编写代码的方式)。
那么无论如何,我的方案是否可行?有什么方法可以使它工作吗?我真正想要的是有某种方式将每个自定义对象放在一个名称空间中。我想我可以通过简单地将所有的类声明放入一个文件来完成这项工作,但这会让entity.h变得臃肿。
我已经用关键字“forward declaration”,“C++”,“namespace”,“one namespace”,“master header”,“header”进行了搜索,并且找不到任何相关的东西。也许我想要做的是错的?
凉。我不知道同名命名空间在不同的类中是允许的。我会尝试。 编辑:如果我需要在B.h中使用A类,而B使用相同的名称空间呢?看来,Visual Studio会自动假定我自动使用“SomeNameSpace”,因此不必去“SomeNameSpace :: B”。我只是要求确认,因为Visual Studio有一种倾向,即不会立即告诉用户有什么错误(即使是编译期问题)。 –
嗯,你是在你的命名空间里,不是吗? –
是的,但是我的C++书没有提到这方面的任何内容。 :/ 感谢您的提示。 –