命名空间范围问题
我有一个关于命名空间范围的简单问题:
- 我有两个命名空间 A 和 B,其中 B 嵌套在 A 内。
- 我在 A 内声明了一些 typedef。
- 我在 B 内声明了一个类(位于 A 内)
来访问 typedef(声明为在A)中,从B内部,我是否需要执行“使用命名空间A;”
即:
B.hpp:
using namespace A;
namespace A {
namespace B {
class MyClass {
typedeffed_int_from_A a;
};
}
}
这似乎是多余的......这是正确的吗?
I have a quick question about namespace scope:
- I have two namespaces, A and B, where B is nested inside A.
- I declare some typedefs inside A.
- I declare a class inside B ( which is inside A )
To access the typedefs (declared in A), from inside B, do I need to do "using namespace A;"
ie:
B.hpp:
using namespace A;
namespace A {
namespace B {
class MyClass {
typedeffed_int_from_A a;
};
}
}
This seems redundant... Is this correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可以
。但是,如果有一个 typedef 或其他与您的 typedef 同名的符号,在命名空间
B
中定义,那么您需要这样写:让我们做一个简单的实验来理解这一点。
考虑以下代码:(必须阅读注释)
输出:
证明
m
的 type 是char*
并且正如预期或预期,n
的 type 是int
。在线演示:http://ideone.com/abXc8
No.
However if there is a typedef or some other symbol with same name as your typedef, defined in the namespace
B
, then you need to write this:Lets do a simple experiment to understand this.
Consider this code: (must read the comments)
Output:
That proves that type of
m
ischar*
and type ofn
isint
as expected or intended.Online Demo : http://ideone.com/abXc8
不,您不需要
using
指令;由于B
嵌套在A
内部,因此A
的内容在B
内部时也在作用域内。No, you don't need a
using
directive; asB
is nested inside ofA
, the contents ofA
are in scope when insideB
.