私はCellsを含むプログラムを作成しています。そのために、CellクラスとCellManagerクラスがあります。セルは2次元配列で編成され、Cellクラスマネージャーには、配列のサイズを反映するxgridとygridの2つのintメンバー変数があります。
どういうわけか、私には理解できません。これらのメンバー変数は、プログラムの実行中に変化します。なぜこれが起こっているのか誰かが理解できますか、あるいは私をどこを見るべき方向に向けるかもしれません。
使用されるクラスと関数は次のようになります。
class Cell
{
public:
Cell(int x, int y);
}
---------------------------------
class CellManager
{
public:
CellManager(int xg, int yg)
void registercell(Cell* cell, int x, int y);
int getxgrid() {return xgrid;}
int getygrid() {return ygrid;}
private:
int xgrid;
int ygrid;
Cell *cells[40][25];
}
-----------------------
and CellManagers functions:
CellManager::CellManager(int xg, int yg)
{
CellManager::xgrid = xg;
CellManager::ygrid = yg;
}
void CellManager::registercell(Cell *cell, int x, int y)
{
cells[x][y] = cell;
}
そしてここに主な機能があります:
int main ()
{
const int XGRID = 40;
const int YGRID = 25;
CellManager *CellsMgr = new CellManager(XGRID, YGRID);
std::cout << CellsMgr->getxgrid() << std::endl; // PRINTS 40
std::cout << CellsMgr->getygrid() << std::endl; // PRINTS 25
//create the cells and register them with CellManager
for(int i = 1; i <= XGRID; i++) {
for(int j = 1; j <= YGRID; j++) {
Cell* cell = new Cell(i, j);
CellsMgr->registercell(cell, i, j);
}
}
std::cout << CellsMgr->getxgrid() << std::endl; // PRINTS A RANDOM LARGE INT, EX. 7763680 !!
std::cout << CellsMgr->getygrid() << std::endl; // PRINTS 1, ALWAYS !!
そこで、CellMgrを初期化し、コンストラクターを介してxgridとygridを設定します。次に、セルの束を作成し、CellMgrに登録します。この後、CellMgrの2つのメンバー変数が変更されましたが、これがどのように発生するかを知っている人はいますか?