关于通过extern实现全局QMap的方法

62 篇文章 13 订阅
50 篇文章 0 订阅

因为工作的需要,要定义几个QMap的映射,但是因为我不清楚如何定义全局的QMap,所以就在好多个类里面定义了好多重复的QMap。
直到后来,请教同事,才得悉了一种方法,梳理如下。

//header.h文件
extern QMap<int, QString> g_mapTest1;
extern QMap<int, QStirng> g_mapTest2;

//专门用来初始化QMap的类
class MapInit
{
public:
	static void InitMap();
};

首先,在一个头文件中使用extern进行声明,注意,这里不能进行定义(不仅仅是extern,其他的变量,除了初始化之外,都不可以在头文件中定义)。
另外创建了一个类,专门用于QMap的初始化,因为这玩意无法在.cpp文件中直接初始化(我没找到这种方法,暂时只能使用这种类的初始化方法代替,等到以后有了更好的解决方案,再更新这篇博客)。

声明结束,就是具体的实现了,代码如下:

//header.cpp文件

/*! 在此处进行定义 */
QMap<int, QString> g_mapTest1;
QMap<int, QStirng> g_mapTest2;

void MapInit::InitMap()
{
	g_mapTest1[0] = "测试1_1";
	g_mapTest1[1] = "测试1_2";
	g_mapTest1[2] = "测试1_3";
		
	g_mapTest2[0] = "测试2_1";
	g_mapTest2[1] = "测试2_2";
	g_mapTest2[2] = "测试2_3";		
}

至此,就实现了全局的初始化工作。

至于调用,也很简单,因为InitMap()函数是静态函数,所以可以直接在主函数中使用

MapInit::InitMap();

即可,这样就完成了全局映射的初始化以及使用工作。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值