2015-05-04 87 views
2

我正在研究一个示例代码,它尝试教授状态图的实现。我看到了模板的typedef如typedef typename T::HostClass Host了解模板内的typedefs

为了清楚起见,模板定义为

template<typename T> 
struct Init { 
    typedef typename T::HostClass Host; 
    Init(Host& h) : 
      host_(h) { 
    } 
    ~Init() { 
     T::entry(host_); 
     T::init(host_); 
    } 
    Host& host_; 
}; 

我才知道的typename目的旁边typedef,并解释Highly-Typed-LanguagesC++(伙计们,我是不是对不对?是不是这样呢?)

的困惑是在HostClass

typedef typename T::HostClass Host;

  • 什么是HostClass
  • 是否意味着任何类型T必须有会员 HostClass
+0

该tut是从这个页面。 ''http:// accu.org/index.php/Journals/252' – nmxprime

回答

3

HostClass必须是一个嵌套类或在T范围另一个的typedef(或别名类型)。如果T没有它,代码将不会编译。

+0

在代码中和代码中,我没有看到HostClass的任何typedef或别名。并且,它也不是嵌套类, – nmxprime

+0

请参阅http://accu.org/index.php/journals/252 – nmxprime

+0

@ nmxprime它可能只是一个错字,并应该阅读'typedef T :: Host Host' – dwcanillas