如何从类中返回自定义数组项目并操纵其属性?C

How to return a custom array item from a class and manipulate its properties? C++

本文关键字:操纵 属性 项目 数组 自定义 返回      更新时间:2023-10-16

我正在尝试使用get函数从表类返回单元格数。单元格具有自己的集合功能。

我只是通过制作单元格数并获取和设置属性来尝试。它起作用了,但是由于某种原因,它在这里不起作用。

class Cell {
    int content;
    ...
public:
    Cell() {
        content = 0;
        ...
    }
    int getContent() {
        return content;
    }
    void setContent(int x){
        content = x;
    }
};
class Table {
    Cell cells[10];
public:
    Table() {}
    Cell getCell(int i) {
        return cells[i];
    }
};
int main () {
    Table t;
    t.getCell(0).setContent(22);
    std::cout<<t.getCell(0).getContent();
}

我期望获得22,但该程序一无所获。

这是因为这里

Cell getCell(int i) {
    return cells[i];
}

您正在返回Cell的副本。然后,您更改其内容,但是当复制范围不范围时,这些内容会丢失。getCell(0)制作在此行末尾丢弃的副本。相反,您想返回对单元格的引用:

Cell& getCell(int i) {

现在,它正在更改cells[10]Cell的内容,而不是其副本。

您可以尝试这样的sth:

Cell* getCell(int i) {
   return &cells[i];
}

t.getCell(0)->setContent(22);
std::cout<<t.getCell(0)->getContent();