读书人

请问怎么把下面代码写的精炼点

发布时间: 2012-03-27 13:44:24 作者: rapoo

请教如何把下面代码写的精炼点

C/C++ code
std::map<u32, char* > g_mapA_cn;std::map<u32, char* > g_mapA_en;std::map<u32, char* > g_mapB_cn;std::map<u32, char* > g_mapB_en;..................std::map<u32, char* > g_mapZ_cn;std::map<u32, char* > g_mapZ_en;char *GetStr(LAN lan, TYPE type, int Idx){    if( lan == emChinese && type == A)    {    return g_mapA_cn[Idx]    }    if( lan == emEnglish && type == A)    {    return g_mapA_en[Idx]    }    if( lan == emChinese && type == B)    {    return g_mapB_cn[Idx]    }    if( lan == emEnglish && type == B)    {    return g_mapB_en[Idx]    }.......    if( lan == emChinese && type == Z)    {    return g_mapZ_cn[Idx]    }    if( lan == emEnglish && type == Z)    {    return g_mapZ_en[Idx]    }}


问题是g_mapA_cn g_mapA_en 到 g_mapZ_cn g_mapZ_en实在太多了 请教下有没有好的写法 比如使用模板或者宏把代码写的精炼点

[解决办法]
初看一下应该是国际化方面的问题。这样的问题用数组解决就可以了,数组中的元素类型就是std::map<u32, char* >
[解决办法]
模板是对于类型不确定的情况下才考虑的,这里用模板不行
至于宏就更别说了,只是简单的替换,这里起不了什么作用,你这里完全可以用数组来实现嘛,你都是同类的对象的实例用数组是最方便了,你写这么多不累吗?你把函数的参数改下,传个数组进去然后分析岂不方便很多。

读书人网 >C++

热点推荐