理解模板中的typedef

时间:2015-05-04 14:11:14

标签: c++ templates

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

为清楚起见,模板定义是

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-Languages,例如C++(伙计,我是对的吗?是这样吗?)

混淆在HostClass

typedef typename T::HostClass Host;

  • 什么是HostClass
  • 这是否意味着任何类型的T必须拥有会员 HostClass

1 个答案:

答案 0 :(得分:3)

HostClass必须是T范围内的嵌套类或其他typedef(或别名类型)。

如果T没有,那么代码就不会编译。