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