C++数组赋初值的问题

hyhong_h 2003-09-27 09:59:48
不好意思,问个基础问题:

有个变量是数组,我希望给它赋初值,但不想一个元素一个元素地赋值。如果这个变量是函数里面的局部变量,可以这样写:
int iABC[] = {1,3,5,3,2,5,5,2};
但如果变量是类的成员呢?我这样写的时候:
class A
{
public:
int iABC[] = {1,3,5,3,2,5,5,2};
}
编译出错!

请问该如何写?
...全文
1285 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmgpy 2003-09-27
  • 打赏
  • 举报
回复
在构造函数里面声明一个临时数组,然后用内存copy拷进去就可以了
ttlb 2003-09-27
  • 打赏
  • 举报
回复
好像只能在构造函数里通过循环赋值了。
fishsward 2003-09-27
  • 打赏
  • 举报
回复

A::A()
{
iABC[] = {1,3,5,3,2,5,5,2};
}
这样肯定是不行的,初始化在{ --- }之前就已经进行完了,应该在初始化列表中
初始化,但涉及到数组,就不方便了,只能用for 循环,进行赋值。

hawkxjy 2003-09-27
  • 打赏
  • 举报
回复
把它定义成静态static成员变量,然后在构造函数的初始化列表中进行初始化赋值即可。
A::A():iABC(1,2,3,....)
{
....
}
lemon520 2003-09-27
  • 打赏
  • 举报
回复
类定义中是不能给成员赋值的,除非是静态成员!
csdn5211 2003-09-27
  • 打赏
  • 举报
回复
class A
{
public:
A();
int iABC[10];
};

A::A()
{
int a[]={1,2,3,4,5,6,7,8};
for(int i=0;i<8;i++)
iABC[i]=a[i];

}
这样就行了,看来在构造函数里真的不能直接赋,你可以用上面的方法解决
sdtea 2003-09-27
  • 打赏
  • 举报
回复
只能用循环赋值的
nonocast 2003-09-27
  • 打赏
  • 举报
回复
class A
{
public:
A();
int iABC[8]; //前面这里的分号是全角,你再试一下
}

初始化应该放在构造函数中
A::A()
{
iABC[] = {1,3,5,3,2,5,5,2};
}

C++ Primer上也是这样写的,理论上是可以了,但我在VC没通过,你试试用BCB
nonocast 2003-09-27
  • 打赏
  • 举报
回复
class A
{
public:
A();
int iABC[8]; //前面这里的分号是全角
}

初始化应该放在构造函数中
A::A()
{
iABC[] = {1,3,5,3,2,5,5,2};
}

C++ PRIMER上至少也是这样初始化的,但VC通不过,你在BCB下试试

May you succeed!
hyhong_h 2003-09-27
  • 打赏
  • 举报
回复
用for语句太累了,我有6个这样的变量,每个变量都有几十个元素,而且没有规律,for语句也用不起来,难道只能一个一个元素赋值了吗?
JackieFan 2003-09-27
  • 打赏
  • 举报
回复
构造函数中
用for语句
hyhong_h 2003-09-27
  • 打赏
  • 举报
回复
不行,“Expression syntax”。
我的编译器是C++Builder6
JackieFan 2003-09-27
  • 打赏
  • 举报
回复
构造函数中初始化
nonocast 2003-09-27
  • 打赏
  • 举报
回复
这样也不对
我试一下
nonocast 2003-09-27
  • 打赏
  • 举报
回复
在类中不能直接初始化
只能申明
class A
{
public:
int iABC[8];
}

初始化应该放在构造函数中
A::A()
{
iABC[8] = {1,3,5,3,2,5,5,2};
}

RedProgramer 2003-09-27
  • 打赏
  • 举报
回复
wizlian(忧伤のzero)的方法是可行的

头文件:
#include <iostream.h>
class a{
a();
static int b[];
};
CPP文件

a::b[]={1,2,3,4....};
sad_4978 2003-09-27
  • 打赏
  • 举报
回复
通过构造函数应该可以。你是一下!
wizlian 2003-09-27
  • 打赏
  • 举报
回复
5510(梦)
class a{
int b=9;// error
static int b=9;// ok--------------你觉得这句对吗?自己先去看看书在说吧
.
.
.
}
-------------------------------------------------------
同样也不能在构造函数中初始化static函数
cannot initialize static class data via constructor

应该
#include <iostream.h>
class a{
a();
static int b[];
};


int a::b[]={1,2,3,4....};
5510 2003-09-27
  • 打赏
  • 举报
回复
lemon520, hawkxjy的观点是正确的, 类中确实不能有const, 除非是static的. 如
class a{
int b=9;// error
static int b=9;// ok
.
.
.
}
Viconia 2003-09-27
  • 打赏
  • 举报
回复
把它定义成静态static成员变量,然后在构造函数的初始化列表中进行初始化赋值即可。
A::A():iABC(1,2,3,....)
{
....
}

---------------------------------------------
这个就对了
加载更多回复(1)

64,651

社区成员

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

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