描述:
小弟弟 我 以前用的是 DELPHI, 最近转到VC 下。 学一点 WTL。
我在 系统的模版类的上面 看到
template <class T, class TBase >
这么一句。
不知道 里面 的 class T ,class TBase 分别表示什么。
请高手指教。
解决方案1:
里面的class T的class不是类。只是两种类型
比如,这是书上的例子。:
#include <iostream.h>
// 定义类模板ABC
template <class T, int I> class ABC //这里的T是不确定的数据类形
{ private:
T array [I] ; // 定义T类型的数组array
public:
void set (int x); // 定义成员函数set
void get () ; //定义成员函数get
};
template <class T,int I> void ABC<T,I> ::set (int x) // 定义成员函数set,这是类模板的用法。
{ int i;
for (i=0; i<I; i++) //循环I次
{ array[i]=x+i; } //数组元素赋值
}
template <class T,int I> void ABC<T,I>::get()
{
cout <<"\n 数组元素总数为:"<< I<<endl;
cout <<" array["<<I-1<<"]="<<array[I-1]<<endl;
}
void main()
{ //由模板ABC生成对象abc1
ABC <int,50> abc1;
abc1.set(0); //调用对象abc1.set
abc1.get(); //调用对象abc1.get
//由模板ABC生成对象abc2
ABC <int,100> abc2;
abc2.set(10); //调用对象abc2.set
abc2.get(); //调用对象abc2.get
}
struct Data
{
int x;
int y;
}
CArray <Data,Data> m_dataArray;
//定义Data的数组,第一个是希望放入数组的数据类型,第二个新加元素时要传入CArray类的对象,之后就可以如下访问:m_dataArray[i].x
什么也不表示。
就是定义两种类型,在它下边的类定义里边可以使用(比如定义变量)。
而在实例化这个类的时候,需要传入这两个参数。