首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个namespace的有关问题

2012-03-18 
一个namespace的问题namespace A{int inamespace B{namespace C{int i}using namespace Cvoid f1(){i

一个namespace的问题
namespace A
{
int i;
namespace B
{
namespace C
{
int i;
}
using namespace C;
void f1()
{
i = 5; // OK, C::i visible in B and hides A::i
}
}
namespace D
{
using namespace B;
using namespace C;
void f2()
{
i = 5; // ambiguous, B::C::i or A::i?
}
}
}

上面的程序中,为什么第一条注释处的语句正确,而第二条注释处的语句不正确。

[解决办法]
首先我们要明白,使用指示并不导入任何具体符号,只是让该名字空间变得可以访问,使用声明才导入具体符号。
分两部分看吧,对于第一条语句,相当于以下代码:

C/C++ code
namespace A{    int i;    namespace B    {        namespace C        {            int i;        }        using namespace C;        void f1()        {             i = 5; // OK, C::i visible in B and hides A::i         }    }} 

热点排行