如何让代码存在于两个或多个非嵌套命名空间的范围内
How do I get code to exist in the scope of two or more non-nested namespaces?
我希望对象/函数仅在使用所有必需的命名空间时才在当前范围内。
例如,假设有一个 H2O(水)对象。
它依赖于氢命名空间和氧气命名空间才能创建和使用。
由于水依赖于这两个命名空间,因此我想要以下行为:
int main(){
using namespace oxygen;
using namespace hydrogen;
H2O water; //<- Works. In scope.
}
int main(){
//using namespace oxygen;
using namespace hydrogen;
H2O water; //<- NOT IN SCOPE
}
int main(){
using namespace oxygen;
//using namespace hydrogen;
H2O water; //<- NOT IN SCOPE
}
int main(){
//using namespace oxygen;
//using namespace hydrogen;
H2O water; //<- NOT IN SCOPE
}
这可能吗? 如果没有,最好推荐哪些替代方案?
No.(从根本上说,您无法决定其他开发人员如何选择引用您声明的符号。
这
是不可能的。
我看不出这在哪里会有多大用处。不过,立即想到的想法是拥有一个包含Atom
s(或任何正确的化学术语 - 已经有一段时间了)的Molecule
,并且只导出oxygen
命名空间中的Oxygen
Atom
,以及各自命名空间中的氢。这意味着只有在氧气和氢气都可见的情况下才能构建水分子。
不过,我仍然有点怀疑这是否是正确的方法。命名空间用于组织。隐藏其他公共类型并不是特别有意义。
相关文章:
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- Boost.Python :C++模板类型匹配的嵌套命名空间
- 使用 astyle 在一行上格式化C++中的嵌套命名空间
- 为什么C 允许具有相同名称的嵌套名称空间
- 用于更简洁代码的嵌套命名空间
- 在嵌套名称空间范围中使用名称空间的正确方法
- 是否可以避免在前向声明中使用嵌套命名空间?
- 尽管包含头文件,但仍找不到嵌套命名空间
- C 11无法解析嵌套名称空间
- 在嵌套命名空间中向前声明
- 如何让代码存在于两个或多个非嵌套命名空间的范围内
- 嵌套命名空间:从内部命名空间访问值
- 如何在不同的文件中使用嵌套命名空间
- 带有嵌套名称空间的Bison和C++不会为我编译
- 嵌套名称空间是如何工作的
- 具有嵌套命名空间内的友元函数的模板类
- 在嵌套命名空间中重载流操作符
- 使方法成为嵌套命名空间中的好友
- C++ ADL 在具有模板函数的嵌套命名空间中
- 使用嵌套命名空间声明"using namespace"时出错 ( "namespace xxx::yyy not allowed in using-declaration" )