[@ PasserBy发现我的问题是重复的。可以解决这个问题,谢谢。]
如何获取具有内部链接的命名空间?也就是说,如何获得外部源文件不可见的命名空间?我想要这个:
static namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
但是,不幸的是,C ++无法识别static namespace
。
答案 0 :(得分:3)
将命名空间包含在未命名空间中
namespace {
namespace N {
int foo() {return 10;}
int bar() {return 20;}
}
}
int sum()
{
return N::foo() + N::bar();
}
之所以可行,是因为未命名的名称空间会自动将其成员(在这种情况下,唯一的成员是名称空间N
)导出到周围的范围,而不会将该成员暴露给其他源文件。