临时变量管理器
問題
有些變量,它們在特定的情況下才有意義。有些功能需要多步才能完成,結果就需要一些中間變量保存過程的狀態,過程結束后變量就失去存在的價值。缺點:
- 浪費存儲空間,雖然內存很廉價,但還是能省則省
- 中間變量變多的時候,所在類越來越大,越來越難以理解
解決方案
封裝一個中間變量管理器:支持創建、刪除、取值、設值這幾個操作就行。臨時變量定義:
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);臨時變量的使用:
// 新創建 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;// 設值 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 于上海轉載于:https://www.cnblogs.com/mywolrd/archive/2012/05/08/2490686.html
總結
- 上一篇: show me
- 下一篇: 关于SQL操作的一些经验