将指针设置为2d数组相等 - 无效的数组赋值

时间:2015-11-20 16:58:42

标签: c++ arrays pointers multidimensional-array

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

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

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

SomeClass.cpp:

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

我收到此错误消息:

E:\Learning\Cpp\MultidemensionalArrays\someclass.cpp:10: Error: invalid array assignment
 *this->data = *data;
             ^

1 个答案:

答案 0 :(得分:1)

  

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

没有。你有一个指向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)。