【问题标题】:Returning element of pointer array member variable返回指针数组成员变量的元素
【发布时间】:2015-12-02 20:22:55
【问题描述】:

我是指针新手,遇到了困难。我正在做一个捕食者 - 猎物模拟器,并且有一个包含一系列存在对象的 City 类,这些对象最终将被转换为人类或僵尸。城市类有一个数组:

class City
{
protected:
    Being *grid[GRID_HEIGHT][GRID_WIDTH];//holds beings

为了简单起见,我将元素初始化为 null。

City::City()
{
    for (int i = 0; i < GRID_HEIGHT; ++i) {
        for (int j = 0; j < GRID_WIDTH; ++j) {
            this->grid[i][j] = NULL;
        }
    }
}

我还有一个方法应该从数组中返回一个存在。 这是我遇到错误的地方:“标识符'网格'未定义”或者如果我使用“this”关键字,它表示仅允许在非静态成员函数中使用。

Being City::*getBeing(int x, int y)
{
    return grid[x][y];
}

所以我可以从 main 方法访问它并打印一个占位符网格:

City myCity;

int main(){
        if (myCity.getBeing(i,j) == null)
        {
            cout << "O";
        }
}

我该如何解决这个问题?是否有更好地理解指针的经验法则?

【问题讨论】:

    标签: c++ arrays pointers


    【解决方案1】:

    getBeing 函数的定义应该是:

    Being *City::getBeing(int x, int y) { ... }
    

    【讨论】:

    • 就这么简单。同样为了将来参考,我还将 NULL 初始值设定项更改为 0,因为在“标识符 null 未定义”的主类中出现错误。谢谢!
    • 应该是NULL,而不是null。如果您使用的是 C++11,我强烈建议您改用 nullptr
    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多