re: VC6中的簡易delegate實現 李現民 2009-09-01 16:47
@陳梓瀚(vczh)
這種寫法在VC6中編譯不過的,不知道有沒有變通手法啊
我感覺這里面說的只有一半適合新人。這文章你在哪里看到的?
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: 自制os開發記(一)——啟動部分 李現民 2009-02-06 16:38
現在很少有人這么做了。
@goodname
謝謝, 我是不知道應該這樣處理的,現在知道了
同樣感謝 Dancefire
@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的
re: 如何在命令行下讀入一行輸入 李現民 2008-09-10 10:28
std空間下有一個全局的getline,不是cin的函數,
std::string strRead;
std::getline(std::cin, strRead);
不用指定緩沖大小
對呀,模板方法,而且是在編譯期就解決了,不過很詭異
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無法輸出漢字的長度一點關系也沒有