gpt4 book ai didi

c++ - 成员变量在 C++ 中因未知原因而更改..?

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:03 24 4
gpt4 key购买 nike

<分区>

我正在创建一个包含 Cell 的程序,为此我有一个 Cell 类和一个 CellManager 类。单元格组织成一个二维数组,Cell类管理器有两个int成员变量xgrid和ygrid,它们反射(reflect)了数组的大小。

出于某种原因我无法弄清楚,这些成员变量在程序执行过程中会发生变化。任何人都可以看到为什么会发生这种情况,或者可以指出我应该寻找的方向。

使用的类和函数如下所示:

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。然后我创建了一堆 Cell 并将它们注册到 CellMgr。之后,CellMgr的两个成员变量发生了变化,谁知道这是怎么发生的?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com