當(dāng)前位置:
首頁(yè) >
临时变量管理器
發(fā)布時(shí)間:2025/3/19
37
豆豆
問(wèn)題
有些變量,它們?cè)谔囟ǖ那闆r下才有意義。有些功能需要多步才能完成,結(jié)果就需要一些中間變量保存過(guò)程的狀態(tài),過(guò)程結(jié)束后變量就失去存在的價(jià)值。缺點(diǎn):
- 浪費(fèi)存儲(chǔ)空間,雖然內(nèi)存很廉價(jià),但還是能省則省
- 中間變量變多的時(shí)候,所在類越來(lái)越大,越來(lái)越難以理解
解決方案
封裝一個(gè)中間變量管理器:支持創(chuàng)建、刪除、取值、設(shè)值這幾個(gè)操作就行。臨時(shí)變量定義:
class Player { public:enum TempVariableType{kTempInvalid,kTempTest,kTempJumpVerification,};TempVariableManager<Player> tmpvars; }; struct JumpVerification {JumpVerification(DWORD x_=0, DWORD y_=0, DWORD mapid_=0) :x(x_), y(y_), mapid(mapid_) {}DWORD x;DWORD y;DWORD mapid; };// 中間變量的定義 define_tempvariable(Player, kTempTest, DWORD); define_tempvariable(Player, kTempJumpVerification, JumpVerification);臨時(shí)變量的使用:
// 新創(chuàng)建 pUser->tmpvars.create<SceneUser::kTempTest>(20); pUser->tmpvars.create<SceneUser::kTempJumpVerification>(JumpVerification(10,10,101));// 刪除 pUser->tmpvars.release(SceneUser::kTempTest); pUser->tmpvars.release(SceneUser::kTempJumpVerification);// 取值 pUser->tmpvars.get<SceneUser::kTempTest>(); pUser->tmpvars.get<SceneUser::kTempJumpVerification>().x pUser->tmpvars.get<SceneUser::kTempJumpVerification>().yJumpVerification& jv = pUser->tmpvars.get<SceneUser::kTempJumpVerification>(); jv.x; jv.y;// 設(shè)值 pUser->tmpvars.get<SceneUser::kTempTest>() = 100; pUser->tmpvars.get<SceneUser::kTempJumpVerification>().x = 100; JumpVerification& jv = pUser->tmpvars.get<SceneUser::kTempJumpVerification>(); jv.x = 100; jv.y = 100; 2012/05/08 21:00 于上海轉(zhuǎn)載于:https://www.cnblogs.com/mywolrd/archive/2012/05/08/2490686.html
總結(jié)
- 上一篇: show me
- 下一篇: [转]PowerDesigner使用教程