我有一个指向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;
^
答案 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
)。