隐藏cpp文件中的声明

时间:2016-11-23 00:52:11

标签: c++ class interface namespaces

我有一个文件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公开发布每个所需成员?

2 个答案:

答案 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.cppfoo::A。只需要使用defcpp::A,您就必须确定要使用哪一个。例如:

A