• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            使用延后static 替換全局變量的使用方法

            struct Gain_Map_String
            {
            public:
                static string GetStringByCmd(CMD_GAIN cmd)
                {
                    const Gain_Map_String* p_static_self = __InitInstance();
                    map<CMD_GAIN, string>::const_iterator iter_map;
                    if(p_static_self->map_string.end() != (iter_map = p_static_self->map_string.find(cmd)))
                        return iter_map->second;
                    return string("");
                }
                static CMD_GAIN GetCmdByString(string& str)
                {
                    const Gain_Map_String* p_static_self = __InitInstance();
                    map<CMD_GAIN, string>::const_iterator iter_map;
                    for (iter_map = p_static_self->map_string.begin(); iter_map != p_static_self->map_string.end(); ++iter_map)
                    {
                        if(str == iter_map->second)
                            return iter_map->first;
                    }
                    return CMD_GAIN_END;
                }
                static CMD_GAIN GetCmdByString(const char* pSZ)
                {
                    const Gain_Map_String* p_static_self = __InitInstance();
                    map<CMD_GAIN, string>::const_iterator iter_map;
                    string str(pSZ);
                    for (iter_map = p_static_self->map_string.begin(); iter_map != p_static_self->map_string.end(); ++iter_map)
                    {
                        if(str == iter_map->second)
                            return iter_map->first;
                    }
                    return CMD_GAIN_END;
                }
            private:
                map<CMD_GAIN, string> map_string;
                static const Gain_Map_String* __InitInstance()
                {
                    static Gain_Map_String stati_instance;
                    return (&stati_instance);
                }
                Gain_Map_String()
                {
                    map_string[CMD_GAIN_PlaceOCOOrder] = "CMD_GAIN_PlaceOCOOrder";
                    map_string[CMD_GAIN_PlaceOCOOrderResult] = "CMD_GAIN_PlaceOCOOrderResult";
                    map_string[CMD_GAIN_PlaceSingleOrder] = "CMD_GAIN_PlaceSingleOrder";
                    map_string[CMD_GAIN_PlaceSingleOrderResult] = "CMD_GAIN_PlaceSingleOrderResult";
                    map_string[CMD_GAIN_ModifySingleOrder] = "CMD_GAIN_ModifySingleOrder";
                    map_string[CMD_GAIN_ModifySingleOrderResult] = "CMD_GAIN_ModifySingleOrderResult";
                    map_string[CMD_GAIN_GetPositionBlotter] = "CMD_GAIN_GetPositionBlotter";
                    map_string[CMD_GAIN_GetPositionBlotterResult] = "CMD_GAIN_GetPositionBlotterResult";
                    map_string[CMD_GAIN_ModifySingleASSPOrder] = "CMD_GAIN_ModifySingleASSPOrder";
                    map_string[CMD_GAIN_ModifySingleASSPOrderResult] = "CMD_GAIN_ModifySingleASSPOrderResult";
                    map_string[CMD_GAIN_DealRequest] = "CMD_GAIN_DealRequest";
                    map_string[CMD_GAIN_DealRequestResult] = "CMD_GAIN_DealRequestResult";
                    map_string[CMD_GAIN_GetPositionBlotterDataSet] = "CMD_GAIN_GetPositionBlotterDataSet";
                    map_string[CMD_GAIN_GetPositionBlotterDataSetResult] = "CMD_GAIN_GetPositionBlotterDataSetResult";
                    map_string[CMD_GAIN_GetDealBlotterWithFilter] = "CMD_GAIN_GetDealBlotterWithFilter";
                    map_string[CMD_GAIN_GetDealBlotterWithFilterResult] = "CMD_GAIN_GetDealBlotterWithFilterResult";
                    map_string[CMD_GAIN_GetOrderBlotterDataSet] = "CMD_GAIN_GetOrderBlotterDataSet";
                    map_string[CMD_GAIN_GetOrderBlotterDataSetResult] = "CMD_GAIN_GetOrderBlotterDataSetResult";
                    map_string[CMD_GAIN_GetOrderBlotter] = "CMD_GAIN_GetOrderBlotter";
                    map_string[CMD_GAIN_GetOrderBlotterResult] = "CMD_GAIN_GetOrderBlotterResult";
                    map_string[CMD_GAIN_GetRatesDataSet] = "CMD_GAIN_GetRatesDataSet";
                    map_string[CMD_GAIN_GetRatesDataSetResult] = "CMD_GAIN_GetRatesDataSetResult";
                    map_string[CMD_GAIN_GetRatesServerAuth] = "CMD_GAIN_GetRatesServerAuth";
                    map_string[CMD_GAIN_GetRatesServerAuthResult] = "CMD_GAIN_GetRatesServerAuthResult";
                    map_string[CMD_GAIN_DealRequestByDealId] = "CMD_GAIN_DealRequestByDealId";
                    map_string[CMD_GAIN_DealRequestByDealIdResult] = "CMD_GAIN_DealRequestByDealIdResult";
                    map_string[CMD_GAIN_GetSymbolBlotter] = "CMD_GAIN_GetSymbolBlotter";
                    map_string[CMD_GAIN_GetSymbolBlotterResult] = "CMD_GAIN_GetSymbolBlotterResult";
                    map_string[CMD_GAIN_CancelOrder] = "CMD_GAIN_CancelOrder";
                    map_string[CMD_GAIN_CancelOrderResult] = "CMD_GAIN_CancelOrderResult";
                    map_string[CMD_GAIN_DealRequestAtBest] = "CMD_GAIN_DealRequestAtBest";
                    map_string[CMD_GAIN_DealRequestAtBestResult] = "CMD_GAIN_DealRequestAtBestResult";
                    map_string[CMD_GAIN_ModifyOCOASSPOrder] = "CMD_GAIN_ModifyOCOASSPOrder";
                    map_string[CMD_GAIN_ModifyOCOASSPOrderResult] = "CMD_GAIN_ModifyOCOASSPOrderResult";
                    map_string[CMD_GAIN_GetMarginBlotter] = "CMD_GAIN_GetMarginBlotter";
                    map_string[CMD_GAIN_GetMarginBlotterResult] = "CMD_GAIN_GetMarginBlotterResult";
                    map_string[CMD_GAIN_PlaceSingleASSPOrder] = "CMD_GAIN_PlaceSingleASSPOrder";
                    map_string[CMD_GAIN_PlaceSingleASSPOrderResult] = "CMD_GAIN_PlaceSingleASSPOrderResult";
                    map_string[CMD_GAIN_GetDealBlotter] = "CMD_GAIN_GetDealBlotter";
                    map_string[CMD_GAIN_GetDealBlotterResult] = "CMD_GAIN_GetDealBlotterResult";
                    map_string[CMD_GAIN_PlaceOCOASSPOrder] = "CMD_GAIN_PlaceOCOASSPOrder";
                    map_string[CMD_GAIN_PlaceOCOASSPOrderResult] = "CMD_GAIN_PlaceOCOASSPOrderResult";
                    map_string[CMD_GAIN_GetAccountObject] = "CMD_GAIN_GetAccountObject";
                    map_string[CMD_GAIN_GetAccountObjectResult] = "CMD_GAIN_GetAccountObjectResult";
                }
            };

            ===================================================================================================================

            使用

            string str = Gain_Map_String::GetStringByCmd(CMD_GAIN_PlaceSingleOrder);
            UINT cmd = Gain_Map_String::GetCmdByString("CMD_GAIN_PlaceSingleOrder");

            ===================================================================================================================

            優點

            1、延時加載,使用時再加載,不使用不會存在;

            2、減少全局對象,以及在代碼中出現的全局對象的變量名,這種代碼耦合也很煩人;

            3、容易定位到所有使用了該類的代碼中,最好是定義一個宏來得到指針,比如:GET_CLASS_A_PTR

            ===================================================================================================================

            注意事項

            1、只適合于生一個一個對象的類;

            posted on 2008-06-07 22:00 肥仔 閱讀(410) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎

            久久久久亚洲AV成人网人人软件| 性高湖久久久久久久久AAAAA| 欧美午夜A∨大片久久| 色偷偷88欧美精品久久久| 久久精品中文字幕一区| 国产精品九九九久久九九| 久久精品综合网| 国内精品久久久久久不卡影院| 狠狠色丁香久久婷婷综合五月| 欧美麻豆久久久久久中文| 久久精品人人做人人爽97| 97精品伊人久久大香线蕉| 模特私拍国产精品久久| 久久综合久久综合久久| 日韩精品久久无码中文字幕| 久久久久久综合网天天| 精品水蜜桃久久久久久久| 久久99精品国产麻豆| 久久强奷乱码老熟女网站| 久久久噜噜噜久久| 草草久久久无码国产专区| 99热成人精品免费久久| 国产亚洲色婷婷久久99精品| 性欧美丰满熟妇XXXX性久久久| 精品熟女少妇AV免费久久| 女同久久| 欧美一级久久久久久久大片| 一级做a爰片久久毛片16| 国内精品欧美久久精品| 久久精品亚洲日本波多野结衣| 波多野结衣久久一区二区| 蜜臀久久99精品久久久久久| 久久综合色区| 无码乱码观看精品久久| 18禁黄久久久AAA片| 91麻豆国产精品91久久久| 久久精品国产99国产精品导航| 久久国产免费直播| 日产精品99久久久久久| 国产91久久精品一区二区| 99久久国产亚洲高清观看2024|