我有一个文件decl.h
,内容如下:
namespace foo {
...
class A;
...
}
我想使用decl.h
中的所有声明,class A
除外,因为我希望在我的def.cpp
中声明和定义另一个具有相同名称的类。我正在寻找能让我这样做的东西:
# include "decl.h"
using namespace foo;
hiding foo::A;
class A {
...
};
有类似的东西吗?或者唯一的方法是在我的foo
中明确地从def.cpp
公开发布每个所需成员?
答案 0 :(得分:1)
只需删除using namespace foo;
即可。这就是命名空间的重点。
答案 1 :(得分:0)
您无法隐藏命名空间的成员,当然也不能使用/1/
Weight
1.1
2.2
3.1
4.2
2.1
3.2
4.5
5.1
语句。
命名空间的重点是避免像你描述的那样命名冲突。
因此,摆脱using namespace ...
语句,并将第二个using namespace foo;
包装在不同的名称空间中,例如:
class A
现在#include "decl.h"
//using namespace foo;
namespace defcpp {
class A {
...
};
}
将了解def.cpp
和foo::A
。只需要使用defcpp::A
,您就必须确定要使用哪一个。例如:
A