我想在一个维度上将二维数组的大小加倍。我在私人成员中定义了一个二维数组
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
我认为它与数组是私有属性有关。所以我想我需要知道如何初始化允许动态分配的数组
答案 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