命名空间的前向声明

时间:2012-12-31 08:06:22

标签: c++ namespaces forward-declaration

namespace CounterNameSpace {
    int upperbound;
    int lowerbound;
    using namespace NS;//Error
}
namespace NS {
int i;
}
// ...
namespace NS {
int j;
}

在上述情况下,它显示错误。  错误C2871:'NS':具有此名称的命名空间不存在 我知道如果我在解决反向空间问题之前定义NS。但只是想知道在c ++中是否存在任何类似命名空间的前向声明的东西。因此,在没有在counternamespace之前定义NS的情况下,上述问题将得到解决。 请帮忙。

1 个答案:

答案 0 :(得分:13)

没有人说命名空间需要立即完成所有内容:

namespace NS {}
namespace CounterNameSpace {
    int upperbound;
    int lowerbound;
    using namespace NS;
}
namespace NS {
int i;
}

然而,这可能不会做你想要的。在您声明它们之前,您仍然无法使用该命名空间中的任何类型。