c++命名空间的用法引用:http://blog.sina.com.cn/s/blog_986c99d601010hiv.html
最近在看项目的源代码,看到了这个用命名空间的小技巧,所以写下这篇文章:
游戏中有很多有用的数据结构包括常用链表,高效循环链表,线程等。如果都分布在各个文件中看起来就乱了。
这个时候用命名空间来管理这些数据结构就非常方便了。比如:base.h 这个是命名空间的头文件。其他文件的数据结构定义都放放在namespace BASE的命名空间中。
比如read.h write.h 等。base.h只包含所有放在BASE命名空间的头文件。命名空间是可以扩展了.a.h中 类A在BASE空间下。b.h中类B也可以定义在BASE空间下。
read.h源代码:
#ifndef __READ_H_
#define __READ_H_
namespace BASE
{
class ReadClass
{
public:
int i;
ReadClass():i(3){}
void setI(int i)
{
this->i = i;
}
void getI()
{
printf("readclass i = %d\n",i);
}
};
}
write.h源代码:
#ifndef __WRITE_H_
#define __WRITE_H_
#include <stdio.h>
namespace BASE
{
class WriteClass
{
public:
int i;
WriteClass()
{
i = 1;
}
void setI(int i)
{
this->i = i;
}
void getI()
{
printf("writeclass i = %d\n",i);
}
};
}
#endif
base.h头文件
#ifndef __BASE_H_
#define __BASE_H_
//游戏中所有在BASE命名空间中的数据结构,因为每个数据结构都有独立的.h头文件。所以定义了base.h保护所有BASE数据结构的头文件
//这样很方便游戏数据结构的管理
#include "read.h"
#include "write.h"
#endif
因为游戏也有全局数据GolbalDefine.h 这个全局数据包含base.h头文件引用还有定义一些常量。如下所示
#ifndef __GOLBALDEFINE_H_
#define __GOLBALDEFINE_H_
#include "base.h"
//游戏项目中全局定义
//服务器组定义
//enum AppGroupE
//{
// GROUP_GATEWAY = 1, //网关服务器组
// GROUP_GLOBALSVR, //公共服务器
// GROUP_MAPSVR, //场景服务器
// GROUP_COPYSVR, //副本服务器
// GROUP_SAVESVR, //数据库保存服务器
// GROUP_DISTRIBUTOR, //负载连接分发服务器
// GROUP_EC, //EC服务器
//};
#endif
所以这些就很方面定义和引用数据了。