博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

typedef typename 单例的潜在问题

Posted on 2015-08-26 14:51  bw_0927  阅读(174)  评论(0)    收藏  举报

typename指示一个类型名,而非定义一个类型,以下声明了一个Seq::iterator类型的变量itr,其中Seq是一个模板实例化时才知道的类:

(所以typename一般是与模版一起使用的,表示是一个类型)

    typename Seq::iterator itr;

如果没有typename指示,Seq::iterator会被认为是Seq的静态变量,而不是类型名。

typename关键字不会定义一个类型,如果你想定义一个新类型的话,你必须这样:

    typedef typename Seq::iterator ITR;

 

http://blog.csdn.net/fullsail/article/details/8483106

 

//H文件
 template <typename T> class Singleton_2B
 {
 protected:
     typedef  T  object_type;
     //利用的是类的静态全局变量
     static T instance_;
 public:
     static T* instance()
     {
         return &instance_;
     }
 };
 
 //因为是类的静态变量,必须有一个通用的声明
 template<typename T> typename Singleton_2B<T>::object_type  Singleton_2B<T>::instance_;
 

 

http://blog.csdn.net/fullsail/article/details/8483106