首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++模版有关问题

2012-02-27 
c++模版问题我想定义一个map的对象,其中map的第二个参数也是一个模版类型,应该怎么定义比如说:template c

c++模版问题
我想定义一个map的对象,其中map的第二个参数也是一个模版类型,应该怎么定义
比如说:
template <class   T>
class   CTypeObject
{
...
}

template   class <T>   map <string,CTypeObject <T> >   m_Object;

这样定义是错误的,但是要怎么定义才正确呢?

[解决办法]
这样不知道能否满足你的要求,但编译是没出错误的:

..........
//////////////////////////////////////////////////////////////////////////
template <class T>
class CFieldType
{
public:
typedef map <string,CTypeObject <T> *> FieldTypeMap ;
CFieldType(){}
~CFieldType(){}

//template <class T>
void Register(string strFieldName, CTypeObject <T> * pTypeObject)
{
FieldTypeMap::iterator itr= m_FieldTypeMap.find(strFieldName);
if(itr==m_FieldTypeMap.end())
{
m_FieldTypeMap.insert(make_pair(strFieldName,pTypeObject));
}
}
void InitObject()
{
for(FieldTypeMap::iterator itr=m_FieldTypeMap.begin();itr!=m_FieldTypeMap.end();itr++)
{
CTypeObject <T> * pTypeObject=itr-> second;
pTypeObject-> Init();
}
}

private:
FieldTypeMap m_FieldTypeMap;

};
void main()
{
CFieldType <string> sMap;
sMap.InitObject();
string x( "X ");
CStringObject *ps=new CStringObject(x);
sMap.Register(x,ps);
}

热点排行