C++ 如何扩展指定的命名空间
我想通过一个实例来解释我的问题。我使用的是第三方库,它有自己的名称空间。我想导入这个库的一部分,在下面提到的名称空间中有自己的名称空间C++ 如何扩展指定的命名空间,c++,c++11,namespaces,c++14,c++17,C++,C++11,Namespaces,C++14,C++17,我想通过一个实例来解释我的问题。我使用的是第三方库,它有自己的名称空间。我想导入这个库的一部分,在下面提到的名称空间中有自己的名称空间 namespace library { namespace part { } } 当前项目中还有一个层次结构。我想用另一个名称导入并扩展库::part到我的项目中。我试着做到以下几点: #include <library/part> namespace project { namespace my_part = library::pa
namespace library {
namespace part {
}
}
当前项目中还有一个层次结构。我想用另一个名称导入并扩展库::part到我的项目中。我试着做到以下几点:
#include <library/part>
namespace project {
namespace my_part = library::part;
}
namespace project {
namespace my_part {
void my_extension_1();
void my_extension_2();
}
}
#包括
命名空间项目{
名称空间my_part=library::part;
}
命名空间项目{
名称空间我的部分{
使我的_扩展名_1()无效;
使我的_扩展名_2()无效;
}
}
该场景可以使用该语言的当前工具完成吗?如果没有,应如何解决?还是不行,为什么
编辑:错误消息gcc 5.3.0转储:
错误:命名空间“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;
}
命名空间库{
名称空间部分{
const int library_part_i=123;
}
}
命名空间项目{
名称空间部分{
使用名称空间库::part;
作废我的_扩展名_1(){};
作废我的_扩展名_2(){};
}
}
int main()
{
//const int i=库第i部分;