我想解释一个实例的问题。我正在使用第三方库,它有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间中有自己的命名空间。
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转储:
错误:命名空间'project :: my_part'
的冲突声明
编辑:有关于扩展原始命名空间的建议,但我要求的是。 library :: part 用户不应该直接访问我添加的功能。
答案 0 :(得分:2)
我相信你想要创建一个包含你自己的命名空间
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;
}