class是声明数据类型参数标识符T的关键字(也可以用typename)。这样,在后面的定义中,凡希望根据实参数据类型来确定数据类型的变量,都可以用T来说明,从而使这个变量可以适应不同的数据类型。
C++结构模板的例子:
template<class T1,class T2, class T3, class T4,class T5>
struct a {
T1 t1;
T2 t2;
T3 t3;
T4 t4;
T5 t5;
};
int main()
{
typedef struct a<int, int ,int ,int, int> deng_type;//定义一个模板结构类型
struct a<int,float,int,int,int> a_obj={1,1.5,6,3,8};
deng_type m={8,3,6,7,0};
cout << a_obj.t1<<" "<<m.t1<<endl;
}
编译g++ temp.cpp -o temp2.exe
注意问题:
结构模板不能用typedef定义别名,比如:
typedef struct a {
T1 t1;
T2 t2;
T3 t3;
T4 t4;
T5 t5;
} a_struct;
这种用法是不允许的,因为此时结构体各个成员类型没有确定,编译器无法知道该类型占用的内存空间。