我正在研究一个示例代码,它试图教授状态图表实现。我在模板中看到了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
? HostClass
?答案 0 :(得分:3)
HostClass
必须是T
范围内的嵌套类或其他typedef(或别名类型)。
如果T
没有,那么代码就不会编译。