C++数组初始化时报错

Zeecool 2010-11-17 06:18:50
我在头文件中定义了一个类
class A
{
public int r[3][6];
}
然后再另外一个C++文件中的构造函数中初始化数组报错了
A::A()
{
r[3][6]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
}
然后就报错了,我把上面那句换成
r[][]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
还是错了,请问我该怎么初始化r[3][6]?
...全文
227 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 milkylove 的回复:]
有个变通的法子……就是这样:

C/C++ code

class A
{
public:
int r[3][6];
A();
private:
static int _init_r[3][6];
};

int A::_init_r[3][6] = {{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1……
[/Quote]
谢谢你,这样做可行。同时也谢谢大家的帮助!
liu163169 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 milkylove 的回复:]
有个变通的法子……就是这样:
C/C++ code

class A
{
public:
int r[3][6];
A();
private:
static int _init_r[3][6];
};

int A::_init_r[3][6] = {{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6……
[/Quote]

楼上正解
liutengfeigo 2010-11-17
  • 打赏
  • 举报
回复
换个思路吧。。你那样确实没办法
失落的凡凡 2010-11-17
  • 打赏
  • 举报
回复
有个变通的法子……就是这样:

class A
{
public:
int r[3][6];
A();
private:
static int _init_r[3][6];
};

int A::_init_r[3][6] = {{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
A::A()
{
memcpy(r, _init_r, sizeof(r) );
}
失落的凡凡 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 milkylove 的回复:]

r[][6]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};

编译器只能自动匹配最高维的数组。
[/Quote]

刚才没看清题……这样确实不行……
HonryZZ 2010-11-17
  • 打赏
  • 举报
回复
等高手...吃饭先...不晓得怎么在默认构造函数中初始化....
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 honryzz 的回复:]
这个..数组不允许这样赋值的...悲剧...
[/Quote]
请问我该怎样初始化r[3][6]?
HonryZZ 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiangyunl 的回复:]
引用 3 楼 dubiousway 的回复:
初始化,和赋值不通的

int a[]={1,2,3};//初始化;而且只有这个时候,能用这种格式,统一一次全部初始化为某个初值

否则,只能
a[1]=2;
a[2]=3
..
..

我将语句改成r[][]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
还是报错……
[/Quote]

把这段代码放在这个构造函数中,无论怎么改,只要用的这样赋值..都会报错...数组只允许这样初始化,不允许这样赋值...
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dubiousway 的回复:]
初始化,和赋值不通的

int a[]={1,2,3};//初始化;而且只有这个时候,能用这种格式,统一一次全部初始化为某个初值

否则,只能
a[1]=2;
a[2]=3
..
..
[/Quote]
我该陈类定义的时候就初始化,这样子还是报错
class A
{
public r[][]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
}
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dubiousway 的回复:]
初始化,和赋值不通的

int a[]={1,2,3};//初始化;而且只有这个时候,能用这种格式,统一一次全部初始化为某个初值

否则,只能
a[1]=2;
a[2]=3
..
..
[/Quote]
我将语句改成r[][]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};
还是报错
HonryZZ 2010-11-17
  • 打赏
  • 举报
回复
这个..数组不允许这样赋值的...悲剧...
dubiousway 2010-11-17
  • 打赏
  • 举报
回复
初始化,和赋值不通的

int a[]={1,2,3};//初始化;而且只有这个时候,能用这种格式,统一一次全部初始化为某个初值

否则,只能
a[1]=2;
a[2]=3
..
..
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 milkylove 的回复:]
r[][6]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};

编译器只能自动匹配最高维的数组。
[/Quote]
VS 2008还是报错,该怎么办呢?
失落的凡凡 2010-11-17
  • 打赏
  • 举报
回复
r[][6]={{-2,2,-2,2,-2,2},{-4,4,-4,1,-4,4},{-5,2,-10,0,-1,6}};

编译器只能自动匹配最高维的数组。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧