2 jwentao01 jwentao01 于 2015.06.11 13:59 提问

C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组?

写了这样一个类:

 class Base{
private:
    int r[MAX_SIZE];
    int length;
public:
    Base()
    {
        r[MAX_SIZE] = {1,2,0,5,8,9,7,3,6,4};    //编译的时候在这边出错
        length = 10;
    }
    void swap_data(int,int);
    void Show(const Base &ob);
    friend int Bubble_Sort0(Base &ob);
};

出错原因是:
1.cpp: In constructor ‘Base::Base()’:
1.cpp:13: 警告:extended initializer lists 只在 -std=c++0x 或 -std=gnu++0x 下可用
1.cpp:13: 错误:不能将‘’转换为‘int’,在 assignment 中
请问各位大神,这是什么意思?有什么解决办法?

6个回答

a1193561652
a1193561652   Rxr 2015.06.11 14:23
已采纳

你这种复制方式只能在定义数组时使用,定义完了以后都只能用循环逐个复制。

jwentao01
jwentao01 谢谢!
2 年多之前 回复
gamefinity
gamefinity   Rxr 2015.06.11 14:02

在构造函数里,只能这样:

r[0]=1;
r[1]=2;
r[2]=0;
。。。

诸如此类。因为构造函数的时候已经是执行部分,不是定义部分了。
或者你可以在定义的时候这样写

class Base{
private:
    int r[MAX_SIZE]={1,2,0,5,8,9,7,3,6,4};
    int length;
        。。。。。。
jwentao01
jwentao01 O(∩_∩)O谢谢!问题解决了。
2 年多之前 回复
star890124
star890124   2015.06.11 14:35

你把私有的数组定义成指针吧,然后初始化的时候把数组指针给它就行了

jwentao01
jwentao01 谢谢,给我提供了一种思路。
2 年多之前 回复
lprui
lprui   2015.06.11 14:36

构造函数已经是执行部分,对于执行部分的数组赋值,只能循环逐个赋值。

jwentao01
jwentao01 thanks!O(∩_∩)O~
2 年多之前 回复
Chain_Gank
Chain_Gank   2015.06.11 14:54

数组初始化时才能这样赋值,如 int r[MAX_SIZE] = {1,2,0,5,8,9,7,3,6,4};
对于已经定义的 int r[MAX_SIZE] , 只能一个个来: r[0]=1; r[1]=2; r[2]=0; ……

jwentao01
jwentao01 O(∩_∩)O谢谢解答!
2 年多之前 回复
max_min_
max_min_   Rxr 2015.07.03 00:28

你的做法只能在数组初始化的时候才可以,赋值的时候是不支持的这么做的

你在构造函数做的是赋值操作,不是初始化。

Csdn user default icon
上传中...
上传图片
插入图片