的静态成员想象以下模板类(setter和getter为省略了构件_t
):模板对象作为模板类
template<class T>
class chain
{
public:
static chain<T> NONE;
chain()
: _next(&NONE)
{}
~chain() {}
chain<T>& getNext() const
{
return *_next;
}
void setNext(chain<T>* next)
{
if(next && next != this)
_next = next;
}
chain<T>& getLast() const
{
if (_next == &NONE)
return *this;
else
return _next->getLast();
}
private:
T _t;
chain<T>* _next;
};
这个概念是,代替使用空指针的基本思想,我有一个静态的默认元素,它仍然是一个技术上有效的对象,它接受这个角色;这可以防止一些与空指针的问题,同时使代码更详细同时...
我可以实例化这个模板就好了,但链接器给出了一个未解决的外部错误的静态成员对象NONE
。
我假设在实例化模板时,行static chain<T> NONE
;实际上也是一个定义,因为它实际上是在实例化模板的实现中发生的。然而,事实证明,这不是...
我的问题是:是否有可能在所有,如果是这样,如何,没有明确定义NONE
元素之前,每个模板实例化?
我不认为这是比任何清洁剂使用一个空指针,诚实。只需用0替换每个'&NONE'。 – GManNickG 2010-06-23 23:15:36