如何在另一个函数中使用lastLoc对象的x和y值,如下面的代码所示。我没有错误但是当我在getPosLoc函数中打印lastLoc的值时,我得到一个长号(可能是地址):
class solveMaze {
private:
maze maze;
mouse m;
stack<coords> coordStack;
int x;
int y;
int posLocCount = 0;
coords lastLoc;
};
solveMaze::solveMaze() {
x = m.x;
y = m.y;
coords c(x, y);
coords lastLoc(c.x, c.y);
coordStack.push(c);
}
void solveMaze::getPosLoc() {
if((mazeLayout[x][y-1] == 0) && (x != lastLoc.x) && (y-1 != lastLoc.y)) {
posLocCount++;
putUp();
}
这是coords.h删除不相关的函数来缩短代码:
class coords {
public:
coords(){};
coords(int, int);
int x;
int y;
friend ostream &operator<<(ostream &output, const coords &c);
bool operator==(coords);
void operator=(const coords &b);
};
coords::coords(int a, int b) {
x = a;
y = b;
}
这是mouse.h:
class mouse {
private:
maze maze;
public:
mouse();
int x;
int y;
};
mouse::mouse() {
for (int i=0; i<12; i++) {
for (int j=0; j<29; j++) {
if (mazeLayout[i][j] == 8){
x = j;
y = i;
}
}
}
}
答案 0 :(得分:2)
有几个明显的问题:
coords lastLoc(c.x, c.y);
此语句声明并初始化名为lastLoc
的局部变量... 引用成员lastLoc
。为此,代码需要
lastLoc = coords(c.x, c.y);
x = m.x;
和y = m.y;
这些语句使用未明确初始化的m
,该类是如何定义的?
答案 1 :(得分:-1)
你应该为x和y制作getter和setter,因为这是更好的练习。但是如果你想参考coord的x或y。你应该写:
lastLoc->x