GameModel
あるオブジェクトから別のオブジェクトに配列への参照を渡し、参照をPersonModel
保存してから、GameModel内と同じようにPersonModel内でこの配列を操作したいのですが...
配列プロセスを渡すことについてひどい誤解があります。クラス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];
が、それははるかに混乱しています。
このトピックを理解するのを手伝ってください:通常の2D配列のように、配列に渡された参照を保存して後で操作するための適切な方法は何ですか。
アップデート:
この配列は、ビットマスクで表されるゲームフィールドタイルのプロパティのマップであるため、実際には読み取り専用です。クラスのカプセル化されたすべてのオブジェクトはGameModel
この配列を読み取る必要がありますが、私は間違いなくそれを複製したり、いくつかの機能を追加したりしたくありません。
Android-NDKだけのフレームワークはありません。