游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2107|回复: 2

关于数组的初始化问题? [

[复制链接]

18

主题

82

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-10-5 10:29:00 | 显示全部楼层 |阅读模式
我在构造函数中初始化一个数组,代码如下:
CFindPath::CFindPath()
{
MapData[MAP_SIZE] =  
{
1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,  
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1,
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0,
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,  
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0
} ;
}
其中MapData[MAPSIZE] 是一个private的数据成员
这样子有问题,错误如下:
f:\c++\c++ project\cfindpath.cpp(8) : error C2059: syntax error :  '{ '
f:\c++\c++ project\cfindpath.cpp(8) : error C2143: syntax error : missing  '; ' before  '{ '
f:\c++\c++ project\cfindpath.cpp(22) : error C2143: syntax error : missing  '; ' before  '} '
错误指向数组MapData[MAP_SIZE] = { 这里,还有下一个 },  
我把数组定义成全局变量就没有问题了,
这不知道为什么,请指教

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2007-10-5 11:33:00 | 显示全部楼层

Re: 关于数组的初始化问题? [

类的非静态数据成员只能在构造函数的函数体或者初始化列表中进行初始化。而无论是初始化列表和构造函数体内都不能用数组的初始化方式。

简单地说,如果你把MapData设计成一个数组,而且又是一个类型的非静态成员,那么就没有办法用你的那个初始化列表的方式进行初始化。替代的方式是用一个静态(也就是你说的全局的)数组存放你的那些数据,然后在类的构造函数中把那些数据拷贝到类的数组成员里面去。

这样说不知道你看懂了没有。

18

主题

82

帖子

86

积分

注册会员

Rank: 2

积分
86
 楼主| 发表于 2007-10-7 23:04:00 | 显示全部楼层

Re: 关于数组的初始化问题? [

懂了,多谢大哥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 19:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表