当所有必要的命名空间都在使用时,我希望对象/函数只在当前作用域中。
例如,假设有一个H2O(水)对象。
它依赖于氢命名空间和氧命名空间才能被创建和使用。
由于water依赖于这两个名称空间,下面是我想要的行为:
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
}这个是可能的吗?如果不是,最好推荐哪些替代方案?
发布于 2013-11-17 03:02:31
不是的。(从根本上说,您无法决定其他开发人员如何选择引用您声明的符号。)
发布于 2013-11-17 03:03:48
这是不可能的。
我看不出这个有多大用处。不过,我马上想到的想法是创建一个包含Atoms的Molecule (或者不管正确的化学术语是什么--已经有一段时间了),并且只导出oxygen名称空间中的Oxygen Atom,以及其各自名称空间中的H2。这意味着只有在氧气和氢气都可见的情况下,才能构建水分子。
不过,我仍然有点怀疑这是不是正确的方法。名称空间用于组织。隐藏其他公共类型并不是特别有意义。
https://stackoverflow.com/questions/20022428
复制相似问题