私有属性C ++上的动态二维数组

时间:2016-05-31 04:30:12

标签: c++ arrays dynamic

我想在一个维度上将二维数组的大小加倍。我在私人成员中定义了一个二维数组

private:
static const int ARRAY_SIZE=2;
static const int NUM_ARRAYS=26;

Profile membersArray[NUM_ARRAYS][ARRAY_SIZE];

我想在该行中有足够的元素时将ARRAY_SIZE加倍。 在我的私人方法

void MyADT::copyAndDoubleArray(){
membersArray= new (nothrow) Profile[NUM_ARRAYS][2*ARRAY_SIZE];
}

上发生以下错误
error: Array type 'Profile[26][2] is not assignable

我认为它与数组是私有属性有关。所以我想我需要知道如何初始化允许动态分配的数组

2 个答案:

答案 0 :(得分:0)

不,它没有任何关于声明为private的成员,因为从您的代码中可以看出,您正试图访问成员函数内的membersArray

首先在你的班级中保留指向Profile的指针并在一个维度上分配内存。

Profile *membersArray;
membersArray = new Profile[NUM_ARRAYS*ARRAY_SIZE];

现在,您可以访问membersArray的{​​{1}}元素,其中membersArray(x*ARRAY_SIZE+y)是二维数组的维度x and y

现在,如果你想增加现有数组的大小,那么:

[0 <= x < NUM_ARRAYS] and [0 <= y < ARRAY_SIZE]

答案 1 :(得分:0)

  

数组类型的对象不能整体修改:即使它们   是&#34; lvalues&#34; (例如,可以采用数组的地址),但它们不能   出现在赋值运算符的左侧。 [*]

因此,您需要使用new[]-expression声明您的数组。你可能会得到类似的东西:

lib.cpp