• <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 肥仔 閱讀(416) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎

            久久国产欧美日韩精品| 91精品国产色综合久久| 中文字幕无码av激情不卡久久| 久久久人妻精品无码一区| 精产国品久久一二三产区区别| 久久久精品国产sm调教网站| 日本精品久久久久中文字幕8| 四虎影视久久久免费观看| 久久99国产精品久久| 伊人久久亚洲综合影院| 一级做a爰片久久毛片人呢| 久久婷婷五月综合成人D啪| 亚洲乱亚洲乱淫久久| 久久人人爽人人爽人人AV| 亚洲?V乱码久久精品蜜桃| 亚洲国产精品久久66| 日韩人妻无码精品久久久不卡| 久久精品亚洲男人的天堂| 久久久精品免费国产四虎| 久久影院综合精品| 欧美亚洲国产精品久久高清| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 99久久99久久精品国产片| 亚洲精品美女久久久久99| 亚洲国产精品成人AV无码久久综合影院| 国产精品99精品久久免费| 少妇人妻88久久中文字幕| 亚洲综合熟女久久久30p| 伊人久久久AV老熟妇色| 亚洲国产综合久久天堂| 久久精品国产精品亚洲下载| 热re99久久精品国产99热| 亚洲乱亚洲乱淫久久| 国产精品日韩欧美久久综合| 精品乱码久久久久久夜夜嗨 | 99久久精品国产一区二区| 99久久精品国产一区二区三区| 成人精品一区二区久久 | 香蕉久久久久久狠狠色| 久久婷婷五月综合色奶水99啪| 少妇无套内谢久久久久|