gui*_*ar- 32 c++ namespaces header file
我想创建一个名称空间,它将包含几个类作为"包"的一部分.
我是否必须声明命名空间中的所有类?
例如,如果我有一个定义2dEngine命名空间的"2dEngine.h",我是否必须在该头文件中声明所有单独的类?或者我仍然可以将它们分成单独的标题(.h)文件并让它们成为命名空间的一部分?
伪示例:
TwoEngine.h
namespace TwoEngine
{
class Canvas
{
// Define all of Canvas here
};
class Primitive
{
// Define all of Primitive here
};
}
Run Code Online (Sandbox Code Playgroud)
而不是这样做,我想让Canvas和Primitive成为他们自己的.h文件,并且只是某种程度上声明它们是该命名空间的一部分.
对不起,我还是很陌生.
Ale*_*x B 38
是的,您可以将命名空间拆分为多个块(以及文件).只要在namespace具有相同名称的块中声明它们,您的类将属于同一名称空间.
// Canvas.h
namespace TwoEngine
{
class Canvas
{
// Define all of Canvas here
};
}
// Primitive.h
namespace TwoEngine
{
class Primitive
{
// Define all of Primitive here
};
}
Run Code Online (Sandbox Code Playgroud)
命名空间可以是不连续的。您可以通过在2DEngine.h中保留相关的类来利用这一点,该类可能将由客户端代码使用,并将作为您的库的一部分提供。
不需要透露给外界的任何其他内容,仍可以放在相同的名称空间中,但可以放在单独的头文件(不附带)中。
标题H1.h(库接口到外部世界的一部分)
namespace TwoEngine
{
class Canvas
{
// Define all of Canvas here
};
}
Run Code Online (Sandbox Code Playgroud)
头文件H2.h(不属于外部环境的库接口)
#include "H1.h"
namespace TwoEngine // reopen the namespace and extend it
{
class Primitive
{
// Define all of Primitive here
};
}
Run Code Online (Sandbox Code Playgroud)