有一个基类:
template<class T_CLASS>
class TBase
{
protected:
static CSomeClass m_objSomeClass;
public:
inline void Set(CSomeClass f_objSomeClass) { m_objSomeClass = f_objSomeClass; }
};
还有一些子类,它们都应具有自己的静态成员m_objSomeClass。我尝试通过模板化基类来做到这一点。
class CSub1 : public TBase<CSub1>
{
//...
};
class CSub2 : public TBase<CSub2>
{
//...
};
这个的定义是什么样的?可能吗?我尝试了一些...但是没有用:
template<class T_CLASS>
CSomeClass TBase<T_CLASS>::m_objSomeClass;
//In fact the next one worked in Visual Studio;
// but not in with the armcc where I need it.
CSomeClass TBase<CSub1>::m_objSomeClass;
CSomeClass TBase<CSub2>::m_objSomeClass;
有什么建议?谢谢,Mirco
最佳答案
template<>
CSomeClass TBase<CSub1>::m_objSomeClass;
template<>
CSomeClass TBase<CSub2>::m_objSomeClass;
如果要为诸如
static
,CSub1
的实体类明确定义CSub2
成员,则这是正确的方法之一。 Demo。编辑:常规方法是定义为:
template<class T_CLASS>
CSomeClass TBase<T_CLASS>::m_objSomeClass;
两种方式都可以达到目的。