游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3271|回复: 8

模板编程的片断代码,希望能吸引到没有接触模板编程的

[复制链接]

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2007-1-2 05:43:00 | 显示全部楼层 |阅读模式
我是希望把一个基本数据类型拆成两部分,分别存取A、B两种数据,
当这个数据类型大于等于32位的时候,第一部分(Left)取 1/4,第二部分(Right)取3/4。
当这个数据类型大于等于8位小于32位的时候,第一部分保证取8位,剩余的为第二部分。


使用方式是
ChannelLength<long>:eft(值为8)
ChannelLength<long>::Right(值为24)

ChannelLength<__int64>::Left(值为16)
ChannelLength<__int64>::Right(值为48)


ChannelLength<char>::Left(值为8)
ChannelLength<char>::Right(值为0)



在我的代码中的作用是避免了硬编码,并且为以后移植64位机器做好了准备,对运行其效率也没有任何影响。

用模板实现了编译期的代码。
下面是代码:)
template<class T,int I = (sizeof(T)>>2)>
class ChannelLength
{
public:
        enum
        {
                Left = (I<<3),
                Right = (sizeof(T) - I)<<3,
                Length = Left + Right
        };
};

//当数据位数小于32时候执行下面代码
template<class T>
class ChannelLength<T, 0>
{
public:
        enum
        {
                Left = 8,
                Right = (sizeof(T) - 1)<<3,
                Length = Left + Right
        };
};


还有一个好玩的事情,以前一直没注意。
这阵子一直喜欢写递归的模板,有一写错没有执行到递归结束的条件,结果编译器(VS2005)一直运行编译,也不会有错误出现。自己等了老长时间。最后发现问题强制结束了编译。

看样子,VC2005支持模板递归的层级还真不少。运行那么长时间还不溢出。

4

主题

23

帖子

31

积分

注册会员

Rank: 2

积分
31
QQ
发表于 2007-1-3 10:03:00 | 显示全部楼层

Re: 模板编程的片断代码,希望能吸引到没有接触模板编程

如果在我这边要做出跟ps2游戏比美的好游戏的话..
一定要全用c做出来..绝对不会用c++做...
c++不适合做复杂系统的游戏...

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2007-1-3 20:38:00 | 显示全部楼层

Re: Re: 模板编程的片断代码,希望能吸引到没有接触模板

马肝兄说的有道理

本人太容易激动,这里改成道歉贴。

4

主题

23

帖子

31

积分

注册会员

Rank: 2

积分
31
QQ
发表于 2007-1-3 21:15:00 | 显示全部楼层

Re: 模板编程的片断代码,希望能吸引到没有接触模板编程

D垃圾游戏就不用说出来了..不一管你是xbox ps3
据我所接触的销量好,可玩性强的ps2游戏都是用c做的..
你常试用c做一个恶磨城,鬼泣3,高达等动作游戏比用c++做
难度是1比3倍...看来楼主还未做过一个完整又好玩创新的大游戏系统.
难怪会用c++.....我接触过5000个游戏
用c做的效率,性能都比c++高很多..
因为他灵活性高.任何对象都可随自己定义...做事随机应变...
你不可能用个大对象来服务小对像的..这很浪费的..而且负担太重了
不利于灵活编程

如果做一个TPS或其他的总之就是超复杂性的游戏系统
我相信我用c做出来的时间会比你快3倍

我很长时间没叨过人了..你不要误导别人了..有本事就发布一个自己做出
来完整的游戏才说吧...不要会那一点代码就乱指...真是一个垃圾人是游戏
程序的废人...影响游戏界环境..

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-1-4 14:02:00 | 显示全部楼层

Re:模板编程的片断代码,希望能吸引到没有接触模板编程

发表个人的几点看法:
1.  语言是死的,人是活的
2.  语言是为了人类表达思想而存在的
3.  影响表达的因素有很多,其中表叙的人的原因占主要
4.  出家人不打诳语,没有调查就没有发言权
5.  LS请注意讨论归讨论,没有必要通过人身攻击来证明自己的观点正确
6.  template在最初设计时根本没有想到今天会被人玩成这个样子,谁都没想过
7.  使用template做递归之类属于奇技淫巧
8.  编译时间虽然一定程度上不及运行时间重要,但也是需要重视的
9.  loki算是把template玩得最转最花的了,可c++他爹看了却婉转得表示这是过于聪明的人写出来的过于聪明的东西
10.以上

6

主题

95

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2007-1-6 12:05:00 | 显示全部楼层

Re:模板编程的片断代码,希望能吸引到没有接触模板编程

老实说这个挺实在的,不算奇技淫巧。另外我觉得奇技淫巧是神来之笔之母。奇技淫巧本身没有危害,危害是把奇技淫巧当作荣誉勋章。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-1-6 16:11:00 | 显示全部楼层

Re:模板编程的片断代码,希望能吸引到没有接触模板编程

To 5楼:
真理和谬误可以互相转化。例如SmartPtr和shared_ptr。ps:concept。

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2007-1-7 23:29:00 | 显示全部楼层

Re: Re: 模板编程的片断代码,希望能吸引到没有接触模板

lit0mail: Re: 模板编程的片断代码,希望能吸引到没有接触模板编程的朋友

如果在我这边要做出跟ps2游戏比美的好游戏的话..
一定要全用c做出来..绝对不会用c++做...
c++不适合做复杂系统的游戏...

C++为什么就不适合做复杂系统的游戏?

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2007-1-7 23:33:00 | 显示全部楼层

Re:模板编程的片断代码,希望能吸引到没有接触模板编程

C++是兼容C的,就是说,本质上用C语言能做出来的东西,用C++都能。
如果要说区别,只是思想上的区别。

照这说么,其实相当是说:OO思想不适合解决复杂的系统。传统的过程式系统更容易解决复杂的系统。



明显这是扯蛋。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 05:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表