• 临时变量管理器


    问题

    有些变量,它们在特定的情况下才有意义。有些功能需要多步才能完成,结果就需要一些中间变量保存过程的状态,过程结束后变量就失去存在的价值。缺点:

    • 浪费存储空间,虽然内存很廉价,但还是能省则省
    • 中间变量变多的时候,所在类越来越大,越来越难以理解

    解决方案

    封装一个中间变量管理器:支持创建、删除、取值、设值这几个操作就行。

    临时变量定义:

    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>().y
     
    JumpVerification& 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 于上海
  • 相关阅读:
    小程序那些坑
    2018-5-31 项目总结
    Android AndroidManifest学习笔记
    android 快捷键
    android的liveview装载数据
    android xml产生和解析
    SerializableMaplist传递数据
    android hander 线程用法
    DataGridView实现分页
    DataGridView添加另外一个控件。
  • 原文地址:https://www.cnblogs.com/mywolrd/p/2490686.html
Copyright © 2020-2023  润新知