我想通过一个实例来解释我的问题。我正在使用第三方库,它有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间中有自己的命名空间。
namespace library {
namespace part {
}
}
当前项目中也有层次结构。我想用另一个名称将 library::part 导入并扩展到我的项目中。我尝试做如下:
#include <library/part>
namespace project {
namespace my_part = library::part;
}
namespace project {
namespace my_part {
void my_extension_1();
void my_extension_2();
}
}
场景可以用语言现有的工具来完成吗?如果没有,应该如何解决?还是不行,为什么?
编辑:错误消息 gcc 5.3.0 转储:
error: conflicting declaration of namespace ‘project::my_part’
编辑:有一个关于扩展原始命名空间的建议,但这是我要求的。 library::part 用户不应直接访问我添加的功能。
最佳答案
我相信你想创建一个你自己的命名空间,其中包含
library::part
包含的所有内容,除此之外,没有
将更多内容放入 library::part
。像这样?
namespace library {
namespace part {
const int library_part_i = 123;
}
}
namespace project {
namespace part {
using namespace library::part;
void my_extension_1(){};
void my_extension_2(){};
}
}
int main()
{
// const int i = library_part_i; <- Does not compile
// const int i = project::library_part_i; <- Does not compile
const int i = project::part::library_part_i;
// library::part::my_extension_1(); <- Does not compile
project::part::my_extension_2();
return 0;
}
关于c++ - 如何扩展分配的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746867/