的靜態成員想象以下模板類(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