清风竹林

ぷ雪飘绛梅映残红
   ぷ花舞霜飞映苍松
     ----- Do more,suffer less

共2页: 1 2 
re: VC6中的简易delegate实现 李现民 2009-09-01 16:47
@陈梓瀚(vczh)
这种写法在VC6中编译不过的,不知道有没有变通手法啊
re: [Ref]Getting a Job in 3D and Games 李现民 2009-08-28 10:15
我感觉这里面说的只有一半适合新人。这文章你在哪里看到的?
re: [翻译]游戏主循环 李现民 2009-08-26 12:18
不错的文章,受教了。我以前见过的设计并没有将update_game与display_game进行明确的区分
re: C++编程中的一些感悟 李现民 2009-08-21 22:43
第六条,比较好
re: 函数参数的理想个数 李现民 2009-08-21 22:30
简单意味着更容易理解,意味着程序逻辑更容易组织,意味着更容易保持正确性。函数参数应该尽可能少,函数体应该尽可能短,类应该尽可能小---这些都是设计与折衷的问题
re: 一个有趣的小问题 李现民 2009-08-21 11:25
对于错误代码的处理,不同的编译器会使用不同的手法, 所以这样的代码还是少写
使用template method意味着使用了继承, 现在我觉得这样的代码应该少用,但仍然还没有在实践上找到好的替代方案
我的理解是:singleton要少用,它就是全局变量;没有必要搞太复杂,使用一个局部静态变量就可以了
re: 简单的属性结构设计 李现民 2009-08-17 19:24
把大量的get, set函数都写出来了,通常这意味了完成没有封装,或者说从访问性上这样做跟将该变量声名为public是差不多的,我觉得根本的解决方案还是要保持类的数据成员数目比较小才好
re: c++调试小技巧 李现民 2009-08-12 21:40
不会引起#endif配对的错乱么?
你不能用sizeof,string是一个对象, sizeof只是其对象的大小,不同的平台实现差别很大;你最好只写string中的字符到文件中,然后反读出来构造一个新的string
对于分摊到多帧的方案,确实身有体会,记得以前做过一个游戏模板数据查询的工具,是用MFC做的,由于一次性查找到的数据过多,一下子加载到列表控件中会引起很严重的停顿,于是我便学游戏的样子将其放到多个帧中处理,程序仍然是单线程,但立马流畅了很多。
STL只是一份标准还不是实现,作为vector来讲,它设计目标应该是作为一个大小伸缩的数组,比如&v[0]可以当作一个数组的指针(如果!v.empty()的话),而deque则不行;deque为了能够以常数时间在顺序容器的头部及尾部进行push操作而设计的,但这个设计的代价通常很大,应该并不是你所想像的二维数组的形式,比如SGI的deque设计就采用了一种类似于文件系统中二级表的方式,其直接结果就是迭代器操作的代价很高。现实程序中你会发现很少有人会用deque,这固然有书中介绍比较少的原因,但也与其操作代价较高是分不开的。
我的意见是,除非不得以,否则使用vector而不要用deque;
你的这种情况,我建议你可以自己写一个容器,那怕是用memove,通常也会比std::vector快很多的
我现在也在用onidle写一个编辑器,我发现打开这个编辑器窗口的时候,放在它前面的其它程序窗口就会死掉(也不是死掉, 就是反应特别慢),我有些怀疑是onidle的问题
我发现在cppblog上开博的有很多都是做游戏的, 感觉这从侧面反应了现在游戏占了c++程序员的很大一部分啊
re: 寻找"发帖水王" 李现民 2009-07-09 09:11
这个是编程之美里的题吧?
re: 基类角色之对象管理器 李现民 2009-07-03 12:03
@Kevin Lynx
今天我看了下,你这种实现方式就已经是观察者了,其中CMonster 就是被观察的(observable),而所有使用auto_null<>对象的都是观察者(observer), 这种实现方法我觉得至少有两个缺点:
1,会强制observable都使用ref_base 基类,同时observer需要使用auto_null<>去封装对象,因此即使新设计的类可以使用auto_null,但旧有的、需要被观察的类无法自动成为observable,因为它们不曾继承ref_base
2,使用auto_null对象时,IDE的智能通常无法诊测出具体对象(CMonster)内部的函数名,只能诊测出像fetch()这些
re: 基类角色之对象管理器 李现民 2009-07-02 18:05
@Kevin Lynx
我感觉那个link的意思有点像观察者observer,即:当一个对象销毁时通知所有对其感兴趣的对象,告诉它们:我死了,不要再来找我

但这种方式,我个人觉得有点复杂了
re: 基类角色之对象管理器 李现民 2009-07-02 18:02
@饭中淹
对于“也就是一个ID,一个KEY来索引一个对象”这种办法,我想可以通过增加ID(我我的实现代码是是index_t)的长度来代替,即定义:
typedef __int64 index_t; // 索引类型

我认为效果是等价的。

re: 设计模式-观察者模式 李现民 2009-03-19 10:18
程序有内存泄漏;而且,如果pMouseA 在销毁时不记得从Cat中删除的话,会有内存访问错误,我建议不要直接在Subject中保存指针。
re: C++同步锁管理的一种方法 李现民 2009-03-05 12:57
这其实是一种很常见的手法
你的这个实现更像singleton,不过virtual proxy与singleton的确很像
现在很少有人这么做了。
re: std::map于vc6下的使用bug 李现民 2009-02-06 16:04
@goodname
谢谢, 我是不知道应该这样处理的,现在知道了

同样感谢 Dancefire
re: 考虑用Macro替换Uncopyable 李现民 2008-10-28 11:48
不错,很好的主意
@RichardHe
这个,前面叙述中已经说过了,“基本上是原版的别人的代码”,汗一个
re: sort函数 李现民 2008-10-07 17:27
中数,最好不要排序
re: 网上面试题疑问 李现民 2008-10-07 16:29
关于i++的问题,c++的与c#, java的计算规则不一样,真搞不清楚为什么要考这样的东西
re: VC6中没有vsnprintf函数 李现民 2008-10-07 16:26
的确没有,这也的确是个问题
@megax
这些是全局函数,不是类函数
类函数的话,如果定义和声明都写在类中,默认就是inline的
std空间下有一个全局的getline,不是cin的函数,
std::string strRead;
std::getline(std::cin, strRead);
不用指定缓冲大小
re: 用至少三种方法实现1+2+...+n 李现民 2008-09-09 09:52
对呀,模板方法,而且是在编译期就解决了,不过很诡异
re: c++程序员的几个境界(转) 李现民 2008-09-07 16:37
C++的四层境界


1。程序员。
有时被称为蓝领,在C++开发小组扮演有用的角色,
但是遇到设计难题时,需要高级程序员指导


2。高级程序员
与普通程序员的区别是,能独立地解决大多数C++设计难题。
要达到这一层次需要至少经过三个复杂的C++PROJECT,并积累了一些设计失败的教

训。

经过努力,大多数C++编程人员都能达到这一高级程序员的境界。

3。一个公司里的GURU
也就是常说的一软件公司里的牛人,可称为一个公司里的GURU,
他们拿着相当高的薪水。,领导一个公司的技术设计。
这样的人需要十年以上OO的经验并经历多个大型软件成功和失败。


4。工业界的GURU

这样人在所在的领域如雷贯耳,几乎很少有公司能够雇得起他们。
他们通常经营着自己的咨询公司。达到境界4的GURU们,几乎在每天的空闲散步时间

里都在思考技术。

对大多数程序员来说,想达到他们的境界,是不现实的。


-------C++ FAQ
三位作者:
Cline : Internet offical Forum C++FAQ 主持人,给数千名C++工程师上过课,
计算机专业博士
Lomow: 高级机构设计师,15年OO开发经验,计算机专业博士
Girou: 国际C++标准委员会成员,数学专业博士
@Herb
ws已经正常构造了,因此std::wcout无法输出汉字的长度一点关系也没有
共2页: 1 2