我试图使用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,但是程序什么也不输出。
答案 0 :(得分:3)
这是因为在这里
Cell getCell(int i) {
return cells[i];
}
您将返回Cell
的副本。然后,您更改其内容,但是当副本超出范围时,这些内容将丢失。 getCell(0)
制作一个副本,并在此行的末尾丢弃。相反,您想返回对该单元格的引用:
Cell& getCell(int i) {
现在,它正在更改Cell
中cells[10]
的内容,而不是其副本。
答案 1 :(得分:0)
您可以这样尝试:
Cell* getCell(int i) {
return &cells[i];
}
t.getCell(0)->setContent(22);
std::cout<<t.getCell(0)->getContent();