将指针设置为等于2d数组-无效的数组分配

Setting Pointers to 2d Array equal - Invalid array assignment

本文关键字:数组 无效 分配 2d 指针 设置      更新时间:2023-10-16

我有一个指向qint8:qint8 *data[200][8]; 的2d数组的指针

我想将该指针传递给构造函数中的另一个类:

SomeClass.h也有qint8 *data[200][8];

SomeClass.cpp:

SomeClass::TilesetBehaviorsView(QWidget *parent, qint8 *behaviors[200][8]) ::QWidget(parent)
{
    *this->items = *items;
}

我收到这个错误消息:

E:LearningCppMultidemensionalArrayssomeclass.cpp:10: Error: invalid array assignment
 *this->data = *data;
             ^

我有一个指向qint8:qint8 *data[200][8]; 的2d数组的指针

没有。您有一个指向qint8的2D指针数组。如果你真的想要一个指向数组的指针,你必须这样声明:

qint8 (*data)[200][8];

然而,指向数组的指针在C++中通常不是很有用。您必须使用括号来访问其成员,例如:

qint8 a = (*data)[4][2];

有了C++11,就几乎不需要C样式的数组了。使用std::array,它没有优先级、衰减或不可分配性的所有问题:

std::array<std::array<qint8, 8>, 200> data;

或者,给定整个数据结构的大小,考虑使用动态数组(std::vector)。