首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

静态结构体数组赋值引起的有关问题

2012-03-20 
静态结构体数组赋值引起的问题Map.hstruct tagOneBigMap{int bigMapTypeID //大地图类型int bigMapLogic

静态结构体数组赋值引起的问题
Map.h


struct tagOneBigMap{
int bigMapTypeID ; //大地图类型
int bigMapLogicStartX ; //大地图起始位置
int bigMapLogicStartY ; 
int bigMapWidth ;
int OneLongMapID ; //单一长地图ID
};

typedef struct tagOneBigMap OneBigMap;


class Maps {

public:


static int nowMaps[7]; //当前生成的地图组合

static const int ONE_BIG_MAPS_LENGTH = 7;
static OneBigMap oneBigMaps[7] ;


/*****************************
构造函数
*****************************/
Maps(){

}


/*****************************
解造函数
*****************************/
~Maps(){

}


/*****************************
初始化底图数据
*****************************/
void initMapData(){

for(int i = 0; i < ONE_BIG_MAPS_LENGTH; i++){
Maps::oneBigMaps[i].bigMapTypeID = nowMaps[i];
  }
}
};

//========================================================
Map.cpp

OneBigMap Maps::oneBigMaps[7] = {
{1,0,0,0,0},
{2,0,0,0,0},
{3,0,0,0,0},
{4,0,0,0,0},
{5,0,0,0,0},
{6,0,0,0,0},
{7,0,0,0,0}
} ;


int Maps::nowMaps[7] = {0,1,2,3,4,5,6};




在另外1个文件里面
Maps* maps = new Maps();
maps->initMapData();

编译通过,运行时候程序崩溃。

如果注释掉 maps->initMapData(); 程序正常运行。

断点看了赋值数据,都是正常的。

若ONE_BIG_MAPS_LENGTH = 1时候,程序不会挂。若ONE_BIG_MAPS_LENGTH>1程序就挂掉。

怀疑是结构体数组初始化问题引起的。但是貌似我声明的没有问题啊。调试了半天看不出来结果。请教各位了。



[解决办法]
不说是否规范,单从语法上分析没什么问题
调试的时候,错误提示是什么.
[解决办法]

探讨
将oneBigMaps[7]和nowMaps[7]的初始化放在Maps的构造函数中。

热点排行