有一个基类:
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;
有什么建议吗?谢谢,米尔科
最佳答案
template<>
CSomeClass TBase<CSub1>::m_objSomeClass;
template<>
CSomeClass TBase<CSub2>::m_objSomeClass;
是正确的方法之一,如果您想明确地为 CSub1
、CSub2
等实体类定义 static
成员。 Demo .
编辑:常规方式是定义为:
template<class T_CLASS>
CSomeClass TBase<T_CLASS>::m_objSomeClass;
两种方式都能达到目的。
关于c++ - 带有模板基类的静态成员定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841632/