gpt4 book ai didi

c++ - 使用 "Error: expression must have a pointer type"关键字时为 "this"

转载 作者:可可西里 更新时间:2023-11-01 18:17:45 24 4
gpt4 key购买 nike

所以我创建了一个父类,我称之为 Parent,它有一个 Square* 网格成员变量。 grid 变量是一个指向大型 Square 数组的指针,其中包含 key 成员变量。 (将此项目视为哈希表)问题是我在 Parent 类中创建一个函数,该函数编辑 Square 数组中的关键变量,但出现错误。这行代码编译:

this->grid = new Square[row*col];

但是这一行不编译:

this->grid[i*col + j]->key1 = j;

它在 this 下划线并表示表达式必须具有指针类型。我想知道是否有人知道我可能做错了什么?

void Parent::initialize(int row,int col) {
this->grid = new Square[row*col];
for(int i = 0; i < row; i++) {
for(int j = 0;j < col; j++) {
this->grid[i*col + j]->key1 = j;
this->grid[i*col + j]->key2 = i;
}
}

最佳答案

你必须使用

this->grid[i*col + j].key1
this->grid[i*col + j].key2

那是因为即使您的网格确实是一个指针,您也已在其内存指向的位置分配了一个 Square 对象数组。因此,当您使用 [] 运算符时,您将获得 Square 类型的对象而不是 Square* 并且对于 Square 对象,您必须使用 。运算符 而不是 -> 运算符。

关于c++ - 使用 "Error: expression must have a pointer type"关键字时为 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com