类C的成员变量是个模板类TMPL,类C派生,模板类的T也派生(TMPL变成TMPL),怎么解决此时成员变量定义有关问题

类C的成员变量是个模板类TMPL,类C派生,模板类的T也派生(TMPL<T>变成TMPL<TX>),如何解决此时成员变量定义问题


template <class T>
class CTempT
{
public:
T* get()
{
// 这里会主动生成 T 
T* p = new T(); 
m_lstObjects.insert( m_lstObjects.end(),p ); 
return p;
}
void release( T* p )
{
m_lstObjects.erase( p );
delete p;
}

std::list<T*> m_lstObjects;
};

class CItem
{
public:
std::string m_name;
};

class CItemEx
{
public:
int m_age;
};

class CDemo // 这是原始基类
{
public:
// 这个基类里有个成员变量m_items 是模板类CTempT实例化后得到的
CTempT<CItem> m_items;
};

class CDemoEx // 这是派生类
{
public:
// 这个派生类里面的 m_items 不能变,要求还得是基类CDemo里面的那个 m_items
// 但由于成员变量m_items还是模板类CTempT实例化后得到的,而且这次实例化要从
// CItemEx 类来实例化

// 这个问题的本意就是:基类中有模板实例化的成员变量,派生类中也要有基类中那个
// 模板实例化的成员变量,但基类和派生类中的模板实例化时所使用的那个T是会派生
// 的,如何解决这个问题。
CTempT<CItemEx> m_items;
};



------解决方案--------------------
以后你会明白的,这就是胡闹一样的设计。
要么
CTempT<CItem *> m_items
要么
CDemo本身成为模板CItem还是CItemEx传给它。
------解决方案--------------------
那必然是你错误理解了需求。
不过,也只能帮你到这一步了。毕竟,不是在你的现场。