怎么在类里面的定义一个动态的数组

2025-05-19 10:18:38
推荐回答(2个)
回答(1):

参考代码如下:
//////////////////////////////////////////////////////////////////////////////
//类定义

class CPolygon
{
public:
CPolygon(int num);
virtual ~CPolygon();

float GetArea(); //取得面积
BOOL SetPoint(int point,float x,float y);//设置第point个点的坐标

private:
BOOL Check(); //检查是否有数据没有设置
int pCount; //边数,也就是顶点数
float *px; //顶点x的数组
float *py; //顶点y的数组
BYTE *pv; //设置数据标志
};

//////////////////////////////////////////////////////////////////////////////
//类实现

CPolygon::CPolygon(int num)
{
if(num<3) //至少是三角形
{
px=NULL;
py=NULL;
pv=NULL;
pCount=0;
}
else
{
px=new float[num]; //按num开辟内存
py=new float[num];
pv=new BYTE[num];
memset(px,0,sizeof(float)*num);//初始化内存
memset(py,0,sizeof(float)*num);//初始化内存
memset(pv,0,sizeof(BYTE)*num); //初始化内存

pCount=num;
}
}
CPolygon::~CPolygon() //用完要回收开辟的内存
{
if(px) delete []px;
if(py) delete []px;
if(pv) delete []px;
px=NULL;
py=NULL;
pv=NULL;
}

BOOL CPolygon::SetPoint(int point,float x,float y)
{
if(point>=0&&point {
*(px+point)=x;
*(py+point)=y;
*(pv+point)=1; //置1,表示数据已经设置过了
return TRUE;
}
return FALSE;
}

BOOL CPolygon::Check() //检查合法性
{
if(pCount==0)
return FALSE;
for(int i=0;i {
if(*(pv+i)==0)
return FALSE;
}
return TRUE;
}

float CPolygon::GetArea();
{
if(Check()) //如果数据准备好
{
//计算结果
//返回结果
}
return 0.0; //数据没准备好就返回0.0
}

//////////////////////////////////////////////////////////////////////////////
//类调用,以三角形为例

CPolygon xObject(3); //定义一个三角形

xObject.SetPoint(0,20.2,30.3); //设置第一点的值
xObject.SetPoint(1,80.4,50.5); //设置第二点的值
xObject.SetPoint(2,70.6,40.7); //设置第三点的值

float Result=xObject.GetArea();
CString Info;
if(Result==0.0)
Info="计算有错误,请检查设置的点是否正确!";
else
Info.Format("三角型的值是:%f",Result);

MessageBox(Info); //显示结果

回答(2):

定义的类型不对

private:
    int (*a)[N];
public:
    Time() {
        a = new int[N][N];
    }