我试图尽可能地解决我的问题,但它涉及在 C++ 中定义的多个对象。不过,它们很简单——我认为最好在进一步解释之前分享我的代码:
#include <iostream>
#include <vector>
struct Cell {
bool visited;
Cell():visited(false) {}
void setVisited(bool val) {visited = val;}
bool beenVisited() {return visited;}
};
struct Vector2D
{
int size;
std::vector<Cell> myVector;
Vector2D(int n): size(n), myVector(n*n) {}
Cell& getAt(int x, int y) {return myVector[((x * size) +y)];}
};
int main()
{
Vector2D vec = Vector2D(1);
Cell cell= vec.getAt(0,0);
cell.setVisited(true);
cell = vec.getAt(0,0);
if (cell.beenVisited() == false)
std::cout << "Why is this not true like I set it a moment ago?\n";
}
我为所有这一切真诚地道歉,但有必要说明这一点。如您所见,我 getAt() 我认为是 Cell 对象,将其访问的实例数据设置为 true,然后关闭到另一个单元格。那么,为什么当我回到同一个单元格时,发现访问的值是假而不是真?!好像它没有注册我的私人数据更改!
做这个的最好方式是什么?
谢谢