
关于 CArray 的问题
大家好,请问CArray型数据可以做类的静态数据成员吗?如果能,如何初始化?我一直初始化不成功其实是这样的,我是一个mfc新手,做一个等高线程序。因此我定义了一个类Con...
大家好,请问CArray型数据 可以做 类的静态数据成员吗?如果能,如何初始化?我一直初始化不成功
其实是这样的,我是一个mfc新手,做一个等高线程序。
因此我定义了一个类 Contour ,其内容很长,我只把要问的重点写下
class Contour
{
...
public:
Contour(long height);
public:
long m_height;
static CArray<CPoint,CPoint> SamplePt;
...
}
这么说吧,SamplePt就是样本点,是已知的,height表示高度
对一副地图来说,会有不同高度的等高线,如果我想画一条高度为50m的等高线,那么我Contour(50),如果想画一条高度为30m的等高线,就Contour(30),但是不管是50m,还是30m的等高线,他们都是通过数据SamplePt计算得来的,因此不同的contour对象都会有同一个SamplePt,所以,我想吧SamplePt设计成一个静态数据,也就是
static CArray<CPoint,CPoint> SamplePt;
但是现在问题是,我如何初始化SamplePt呢?我只知道对简单类型比如int的静态数据初始化,对CArray类型还没见过
对int类型的静态变量初始化 应该是这样
int Contour::i=0;
所以我试着模仿这样写过
CArray<CPoint,CPoint> Contour::SamplePt.add(...);
这样不行~~
不知道怎么办了,所以请教各位
请帮帮忙~~~ 展开
其实是这样的,我是一个mfc新手,做一个等高线程序。
因此我定义了一个类 Contour ,其内容很长,我只把要问的重点写下
class Contour
{
...
public:
Contour(long height);
public:
long m_height;
static CArray<CPoint,CPoint> SamplePt;
...
}
这么说吧,SamplePt就是样本点,是已知的,height表示高度
对一副地图来说,会有不同高度的等高线,如果我想画一条高度为50m的等高线,那么我Contour(50),如果想画一条高度为30m的等高线,就Contour(30),但是不管是50m,还是30m的等高线,他们都是通过数据SamplePt计算得来的,因此不同的contour对象都会有同一个SamplePt,所以,我想吧SamplePt设计成一个静态数据,也就是
static CArray<CPoint,CPoint> SamplePt;
但是现在问题是,我如何初始化SamplePt呢?我只知道对简单类型比如int的静态数据初始化,对CArray类型还没见过
对int类型的静态变量初始化 应该是这样
int Contour::i=0;
所以我试着模仿这样写过
CArray<CPoint,CPoint> Contour::SamplePt.add(...);
这样不行~~
不知道怎么办了,所以请教各位
请帮帮忙~~~ 展开
2个回答
展开全部
首先在Contour.h里面定义静态变量和静态变量初始化函数
static CArray<CPoint,CPoint&> SamplePt;
static void InitialStatic();
然后在Contour.cpp中声明变量
CArray<CPoint, CPoint> Contour::SamplePt;
实现InitialStatic
void Contour::InitialStatic()
{
if (SamplePt.GetSize() == 0) //防止被重复初始化
{
SamplePt.Add(CPoint(1, 1));
SamplePt.Add(CPoint(1, 2));
SamplePt.Add(CPoint(1, 3));
SamplePt.Add(CPoint(1, 4));
SamplePt.Add(CPoint(1, 5));
}
}
并在Contour::Contour()中调用InitialStatic
static CArray<CPoint,CPoint&> SamplePt;
static void InitialStatic();
然后在Contour.cpp中声明变量
CArray<CPoint, CPoint> Contour::SamplePt;
实现InitialStatic
void Contour::InitialStatic()
{
if (SamplePt.GetSize() == 0) //防止被重复初始化
{
SamplePt.Add(CPoint(1, 1));
SamplePt.Add(CPoint(1, 2));
SamplePt.Add(CPoint(1, 3));
SamplePt.Add(CPoint(1, 4));
SamplePt.Add(CPoint(1, 5));
}
}
并在Contour::Contour()中调用InitialStatic

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询