代码之家  ›  专栏  ›  技术社区  ›  Mephane

模板对象作为模板类的静态成员

  •  1
  • Mephane  · 技术社区  · 16 年前

    _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 ; 实际上也是一个定义,因为它实际上发生在实例化模板的实现中。然而,事实证明不是。。。

    我的问题是:在没有明确定义 没有

    2 回复  |  直到 16 年前
        1
  •  3
  •   R Samuel Klatchko    16 年前

    NONE

    template<class T>
    class chain
    {
        // the same as your example
    };
    
    // Just add this
    template <class T>
    chain<T> chain<T>::NONE;
    
        2
  •  2
  •   Edward Strange    16 年前
    template < typename T >
    chain<T> chain<T>::NONE;
    

    应该有用

    推荐文章