• <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++ 基礎

            精品综合久久久久久97超人| 亚洲女久久久噜噜噜熟女| 国产成人无码久久久精品一| 久久精品免费一区二区三区| 欧美久久综合性欧美| 午夜精品久久久久9999高清| 人妻久久久一区二区三区| 久久国产V一级毛多内射| 亚洲人成伊人成综合网久久久| 91精品久久久久久无码| 丰满少妇高潮惨叫久久久| 久久精品免费大片国产大片| 久久精品成人免费网站| 亚洲精品无码专区久久同性男| 久久久久高潮毛片免费全部播放| 看全色黄大色大片免费久久久| 999久久久免费精品国产| 久久久久久精品久久久久| 亚洲精品成人网久久久久久| 99久久精品午夜一区二区| 久久亚洲AV无码精品色午夜 | 97久久精品国产精品青草| 久久av高潮av无码av喷吹| 久久国产精品久久| 久久精品中文闷骚内射| 精品综合久久久久久98| 国内精品久久久久影院老司| 久久99精品国产麻豆不卡| 中文精品久久久久国产网址| 久久久久AV综合网成人 | 久久大香香蕉国产| 国产精品99久久久久久宅男小说| 久久精品国产第一区二区| 国产真实乱对白精彩久久| 免费精品99久久国产综合精品| 婷婷五月深深久久精品| 伊人久久大香线蕉综合Av | 久久久久久久久久免免费精品| 香港aa三级久久三级| 国产精品免费久久| 亚洲国产成人久久综合区|