2015-05-04 88 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