VC++MFC中这种声明格式是啥意思????

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:10:44
CArray<CPoint,CPoint> ptArray;
CPoint pt(10,20);
ptArray.Add(pt);
如果写为CArray<CPoint> ptArray;
会有啥不同?
为何我自己使用CArray<struct 结构> pt;
编译器会报错???

template<class TYPE, class ARG_TYPE = const TYPE&>
第二个参数有默认值,如果你写成CArray<CPoint> ptArray,那么它默认为
CArray<CPoint,const CPoint &> ptArray; 第一个参数指的是存储的对象的类型,第二个参数是操作时参数的类型。如像调用CArray的成员函数Add的时候,
Add(ARG_TYPE newElement);这个ARG_TYPE指的就是CPoint &或者是const CPoint &,看你是怎么声明这个CArray的了。最好是用const类型。

定义结构体如下:
struct _st
{
int a;
int b;
};
使用的时候:
CArray<struct _st> a;
也可以像这样定义结构体并且使用:
typedef struct _st//注意这里的typedef,如果没有,那么st只是相当于是struct _st的一个对象。而不是类型
{
int a;
int b;
}st;
CArray<st> a;