+ -
当前位置:首页 → 问答吧 → 怎样初始化struct指针数组类型?

怎样初始化struct指针数组类型?

时间:2011-12-15

来源:互联网

//========头文件===============
#ifndef RectBox_H
typedef struct
{
CvPoint* right_pt;
  CvPoint* left_pt;
  int width;
}Rect;
#endif

//#ifndef RectBox_HH
static Rect rectBox;
//#endif 

//多个文件引用头文件。
//在cpp文件中,定义
  rectBox.right_pt=new CvPoint[6];
rectBox.left_pt=new CvPoint[6];
rectBox.width=0;

for(int i=0;i<6;i++){
rectBox.right_pt[i].x=0;
rectBox.right_pt[i].y=0;
rectBox.left_pt[i].x=0;
rectBox.left_pt[i].y=0;
}
//出现错误,请问怎样初始化 rectBox.right_pt和rectBox.left_pt?

作者: migan2008   发布时间: 2011-12-15

报的什么错误?头文件中的静态变量只是声明,你需要在cpp文件中在定义的。

作者: vichal   发布时间: 2011-12-15

memset(rectBox.right_pt,0,6);
memset(rectBox.left_pt,0,6);

作者: sunyongliang118   发布时间: 2011-12-15

memset(rectBox.right_pt,0,6);
memset(rectBox.left_pt,0,6);
然后如果你要是具体应用这个rectBox.right_pt指针,还要让rectBox.right_pt指向有效的CvPoint对象的。

作者: sunyongliang118   发布时间: 2011-12-15

如果我单纯的想在头文件定义一个全局CvPoint* left_pt数组,且这个头文件会经过多次引用。怎样在cpp文件中定义呢?
thx~
引用 3 楼 sunyongliang118 的回复:

memset(rectBox.right_pt,0,6);
memset(rectBox.left_pt,0,6);
然后如果你要是具体应用这个rectBox.right_pt指针,还要让rectBox.right_pt指向有效的CvPoint对象的。

作者: migan2008   发布时间: 2011-12-15

引用 4 楼 migan2008 的回复:

如果我单纯的想在头文件定义一个全局CvPoint* left_pt数组,且这个头文件会经过多次引用。怎样在cpp文件中定义呢?
thx~
引用 3 楼 sunyongliang118 的回复:

memset(rectBox.right_pt,0,6);
memset(rectBox.left_pt,0,6);
然后如果你要是具体应用这个rectBox.right_pt指针,还要让r……

在其中一处定义,其他要引用的地方用ertern关键字声明。

作者: hshjin   发布时间: 2011-12-15