I want to pass a reference to an array from one object GameModel to another PersonModel, store reference and then work with this array inside PersonModel just like inside GameModel, but...
I have a terrible misunderstanding of passing an array process: In the class PersonModel I want to pass an array by reference in a constructor (see code block below). But the marked line throws the compile error
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; } Here is the header file 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 As I see now, I can change the int path[FieldSize::HEIGHT][FieldSize::WIDTH]; declaration to int (*path)[FieldSize::WIDTH]; but it is much more confusing.
Help me understand this topic: what is the proper way to store the passed reference to an array to work with it later, like with usual 2D array.
UPDATE:
This array is a map of game field tiles properties represented by bit-masks, so it is read-only actually. All the incapsulated objects of GameModel class should read this array, but I definitely don't want to duplicate it or add some extra functionality.
There are no frameworks just bare Android-NDK.
path(the member of the class) to be areference(well, pointer), instead of an array.int (*path)[WIDTH];and save the height somewhere.