首先,对不起我的英语。
好的,我正在开发一个执行特定过程的程序。这个过程需要定义一些类和函数。所有这些都必须以块的形式组织起来才能访问它们。
我的第一个想法是使用命名空间(C++),得到这样的东西:
namespace LoadSystem
{
namespace ParseBlock1
{
class ClassA {...}
class ClassB {...}
class ClassC {...}
}
namespace ParseBlock2
{
class ClassA {...}
class ClassB {...}
class ClassC {...}
}
}
因此,我正在阅读以了解这是否好坏。我已经读过我不能使用很多嵌套的命名空间,所以,就我的目的而言,最小级别是两个,如上所示。
我的目标是能够将越来越多的内容添加ParseBlocks
到LoadSystem
命名空间中。它将存储在一个.h
文件中,因此只有类的接口。由于每个块可以有很多类,我想将每个块的定义拆分到其他.h
文件中,以尽可能保持主.h
文件的小。
所以,我以定义一个文件的想法结束block1.h
,block2.h
每个文件都有这样的结构:
namespace LoadSystem
{
namespace ParseBlock1
{
class ClassA {...}
class ClassB {...}
class ClassC {...}
}
}
和
namespace LoadSystem
{
namespace ParseBlock2
{
class ClassA {...}
class ClassB {...}
class ClassC {...}
}
}
并将它们导入load_system.h
文件中。所以,每次我需要添加另一个块时,我都会编写所需的文件,最后,我只需将新的文件导入blockX.h
main load_system.h
.
然后,我必须能够使用LoadSystem::ParseBlock1::Class1
or访问同一命名空间中的两个块LoadSystem::ParseBlock2::Class1
。
我已经用简单的整数值对此进行了测试,它可以工作。命名空间结合起来,我可以在没有任何警告的情况下访问这些值(我使用过gcc -Wall -Werror -Wextra -pedantic
)。
那么,这种命名空间的组合是否正确。也许它有效,但我可能不应该使用它,我不知道。
另外,我想知道这个导入“主”头文件(导入其他头文件)的过程是否也正确(我正在使用所需的#ifndef
,#define
和#endif
宏来防止多次导入),我是使用这样的东西:
# ifndef LOAD_SYSTEM_H_
# define LOAD_SYSTEM_H_
# include "block1/block1.h"
# include "block2/block2.h"
# endif
所以,请帮助我知道这是否正确。