zoukankan      html  css  js  c++  java
  • 临时变量管理器

    问题

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

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

    解决方案

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

    临时变量定义:

    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 于上海
  • 相关阅读:
    使用express框架创建服务器
    搭建第一个node服务器
    Node 与JS的区别
    node学习之路
    【每天一个linux命令】read
    【每天一个linux命令】awk
    【每天一个linux命令】wc
    【每天一个linux命令】sed
    【每天一个linux命令】tee
    【每天一个linux命令】find
  • 原文地址:https://www.cnblogs.com/mywolrd/p/2490686.html
Copyright © 2011-2022 走看看