下面的例子 讲述了自定义命名空间的使用方式。和几种不同的引用定义名称的方法。
#include <iostream>
using namespace std;
//定义一个命名空间,这个语法没有;
namespace spaceA{
int g_nVal = 10;
}
namespace spaceB{
namespace spaceC{
struct teacher
{
int id;
char name[64];
};
}
namespace spaceD{
struct teacher
{
int id;
int lvl;
char name[64];
};
}
using namespace spaceC;
}
int main(void)
{
using namespace spaceA;
cout<<"g_nVal="<<g_nVal<<endl;
//方式1 using spaceB::spaceC::teacher;
//方式2 using namespace spaceB::spaceC;
//using namespace spaceB;这样会报错,因为B中 可能会存在其他的teacher(比如D中的)
//所以引用namespace的时候 里面的类型名称必须是唯一的
//方式3 或者在spaceB 中引用 加一句using namespace spaceC; 然后就直接引用spaceB就行了
/*namespace spaceB{
namespace spaceC{
struct teacher
{
int id;
char name[64];
};
}
namespace spaceD{
struct teacher
{
int id;
int lvl;
char name[64];
};
}
using namespace spaceC;
}
*/
using namespace spaceB;
struct teacher t1;
t1.id = 10;
cout<<"t1.id="<<t1.id<<endl;
return 0;
}