template<int32_t ID= 0, class ID_TYPE = int32_t>
class Event {
public:
typedef ID_TYPE type;
typedef Event<ID, ID_TYPE> event_obj_type;
.....
}
关于此代码,“Event<ID, ID_TYPE>
”是什么意思?
类名与&lt;&gt;,我以前从未见过这个。
有人可以开导我吗?
感谢
答案 0 :(得分:3)
您可能熟悉功能模板。这样:
Event<ID, ID_TYPE>
是类模板。与函数模板实例化不同,其中函数的参数本身有助于编译器推导出模板类型参数,使用类模板必须显式传递模板类型(在尖括号中)。
答案 1 :(得分:1)
事件是一个模板:在编译时创建类似类的模式。 如果在您的代码的某些地方,您: 事件&lt; 0,int32_t&gt;一个; 事件&lt; 3,char&gt; A;
将从此模板定义两个类。一个使用ID = 0, ID_TYPE = int32_t
,另一个使用ID = 3, ID_TYPE = char
。
[编辑] 如果你分解第一个,你的类定义将是:
class Event
{
public:
typedef int32_t type;
typedef Event event_obj_type;
.....
}