如何在另一个函数中使用类对象? C ++

时间:2016-03-26 08:37:39

标签: c++ oop object

如何在另一个函数中使用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;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

有几个明显的问题:

  1. coords lastLoc(c.x, c.y);
  2. 此语句声明并初始化名为lastLoc的局部变量... 引用成员lastLoc。为此,代码需要

    lastLoc = coords(c.x, c.y);
    
    1. x = m.x;y = m.y;
    2. 这些语句使用未明确初始化的m,该类是如何定义的?

答案 1 :(得分:-1)

你应该为x和y制作getter和setter,因为这是更好的练习。但是如果你想参考coord的x或y。你应该写:

lastLoc->x