gpt4 book ai didi

c++ - 带有模板基类的静态成员定义

转载 作者:太空狗 更新时间:2023-10-29 20:17:20 26 4
gpt4 key购买 nike

有一个基类:

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;

是正确的方法之一,如果您想明确地为 CSub1CSub2 等实体类定义 static 成员。 Demo .

编辑:常规方式是定义为:

template<class T_CLASS>
CSomeClass TBase<T_CLASS>::m_objSomeClass;

两种方式都能达到目的。

关于c++ - 带有模板基类的静态成员定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com