如何扩展分配的命名空间
How to extend an assigned namespace
我想通过一个实例来解释我的问题。我正在使用第三方库,它有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间中有自己的命名空间。
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;
}
我想通过一个实例来解释我的问题。我正在使用第三方库,它有自己的命名空间。我想导入这个库的一部分,在下面提到的命名空间中有自己的命名空间。
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;
}