我想将一个数组的引用从一个对象GameModel
传递给另一个对象PersonModel
,存储引用,然后在 PersonModel 中使用这个数组,就像在 GameModel 中一样,但是......
我对传递数组过程有一个可怕的误解:在类中PersonModel
,我想在构造函数中通过引用传递数组(参见下面的代码块)。但是标记的行会引发编译错误
PersonModel::PersonModel( int path[FieldSize::HEIGHT][FieldSize::WIDTH], int permissionLevel ) {
this->path = path; //<------ ERROR here:
//PersonModel.cpp:14:22: error: incompatible types in assignment of 'int (*)[30]' to 'int [31][30]'
this->permissionLevel = permissionLevel;
}
这是头文件PersonModel.h
#ifndef PERSON_MODEL
#define PERSON_MODEL
#include "data/FieldSize.h"
namespace game{
class IntPosition;
class MotionDirection;
class PersonModel {
protected:
int path[FieldSize::HEIGHT][FieldSize::WIDTH];
int permissionLevel;
public:
PersonModel( int path[FieldSize::HEIGHT][FieldSize::WIDTH], int permissionLevel );
void setMotionDirection ( MotionDirection* md);
void step(long time);
void reset(long time);
};
}
#endif
正如我现在所看到的,我可以将int path[FieldSize::HEIGHT][FieldSize::WIDTH];
声明更改为,int (*path)[FieldSize::WIDTH];
但它更加混乱。
帮助我理解这个主题:将传递的引用存储到数组以供以后使用的正确方法是什么,就像通常的二维数组一样。
更新:
该数组是由位掩码表示的游戏字段图块属性的映射,因此它实际上是只读的。类的所有封装对象都GameModel
应该读取这个数组,但我绝对不想复制它或添加一些额外的功能。
没有框架,只有裸 Android-NDK。