Qt元对象系统和模板机制的冲突

53 篇文章 2 订阅
53 篇文章 36 订阅

Qt元对象系统是对为了Qt对象类型和信号与槽机制引进的,Qt的工具包中有一个元对象编译器,它是为支持Qt元对象系统而产生一些额外C++代码,这些编码会和源码一起被标准的C++编译器编译,因为Qt的这一套标准是不支持的,但是可以实现,说白了就是在标准编译器编译前的一个预处理。

C++的模板机制是代码重用,其实现在已经不只是这些。如果有兴趣可以了解一些C++的最新的研究方面,比如模板元编程,繁殖性编程等。标准编译器遇到模板会进行类型的替换。但是Qt的元对象系统需要明确知道类型。如果看过生成的额外的代码就会发现,它做些一些薄记工作,类型转换,这些都是需要明确的类型,而模板必须由标准的编译器替换,而元对象编译器工作在便准编译器之前,所以就是冲突的地方。想解决这个冲突,必须元对象编译器先完成类型的替换在生成额外的代码才行。

我在前面讲过我提前完成了标准编译器完成的事,使用typedef指定了T的类型,虽然可以通过改变指定的类型来实现代码的重用,可是却不能解决一个基本的问题,怎么样生成在一个程序中不同类型的类。比如上面我虽然可以将student改成person,可是我不能同时使用student和person。

在此还希望一些在模板方面的大神给予小弟一些帮助

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值