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

时间:2019-05-10 10:10:23

标签: c++ arrays class

我试图使用get函数从Table类返回一个Cell数组项。 Cell类具有其自己的set函数。

我尝试通过仅创建一个Cell数组并获取并设置属性来进行尝试。它起作用了,但是由于某种原因在这里不起作用。

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,但是程序什么也不输出。

2 个答案:

答案 0 :(得分:3)

这是因为在这里

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

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

Cell& getCell(int i) {

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

答案 1 :(得分:0)

您可以这样尝试:

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


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