如果使用嵌套命名空间,则头文件中的声明可能会变得非常长且不可读.
//header1
namespace test { namespace test1 {
class Test {};
} } //namespace
Run Code Online (Sandbox Code Playgroud)
在程序的header2中:
#include "header1"
namespace test2 {
class Test1 {
void test(test::test1::Test &test) {}
void test1(test::test1::Test &test) {}
void test2(test::test1::Test &test1, test::test1::Test &test2) {}
};
}
Run Code Online (Sandbox Code Playgroud)
是否有可能缩短header2中的名称?
这是我最喜欢的技术:
#include "header1"
namespace test2 {
class Test1 {
private:
typedef ::test::test1::Test MeaningfulName;
void test(MeaningfulName &test) {}
void test1(MeaningfulName &test) {}
void test2(MeaningfulName &test1, MeaningfulName &test2) {}
};
}
Run Code Online (Sandbox Code Playgroud)
我将typedef别名设为私有,但我将它们放在类声明的开头.它们对程序的其余部分是私有的并不重要,因为没有人会使用别名,他们将使用实际的类型名称或他们自己的名称别名.
我也非常喜欢使用锚定的命名空间名称以避免以后的意外.我的规则是我总是使用一个锚定的名称,除非名称空间是我控制的名称和/或是当前项目或包的一部分或其他.然后我将使用最短的相对名称.如果该相对名称将从根命名空间开始,我仍然经常使用锚定名称.
主要问题是<:一旦你开始更频繁地使用锚定名称,将会在模板声明中突然出现的有向图.你必须放置一个空间来避免它,特别是因为有向图处理在很早的阶段发生,并且可以给你一些非常奇怪的错误消息.
| 归档时间: |
|
| 查看次数: |
3578 次 |
| 最近记录: |