读书人

c++模版有关问题

发布时间: 2012-02-27 10:00:22 作者: rapoo

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);
}

读书人网 >C++

热点推荐