問題を可能な限り SSCE しようとしましたが、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";
}
このすべてについて心からお詫び申し上げますが、要点を説明するために必要です。ご覧のとおり、Cell オブジェクトと思われるものを getAt() し、アクセスしたインスタンス データを true に設定してから、別のセルに切り替えます。では、同じセルに戻ったときに、訪問した値が true ではなく false であることがわかるのはなぜですか?! 個人データの変更が登録されていないようです。
これを行う最善の方法は何ですか?
ありがとう