【发布时间】:2021-01-26 07:44:46
【问题描述】:
我的 C++ 中的 getter 和 setter 有问题。我实现了一个队列,我还实现了一个类 Process。我的队列保存进程。我的类 Process 有两个属性:“Identifier”和“Time”,还有 setter 和 getter。我将 80 设置为时间。那么问题是我想将时间修改为 50 并且它没有改变。我认为问题出在队列上,但我不知道在哪里。这是我的代码片段
Queue<Process> process;
Process x;
x.setIdentifier("Hi");
x.setTime(80);
process.enqueue(x);
process.getElementFront().setTime(50);
process.print();
这是我的队列代码:
class Queue{
private:
int size;
Node <L> *front;
public:
.
.
.
//front()
L getElementFront() const{
return this->front->getElement();
}
这是我的节点代码:
class Node{
private:
L elem;
Node *next;
public:
.
.
.
L getElement() {
return this->elem;
}
这是我的流程类:
class Process{
private:
string identifier;
int time;
public:
Process(){
identifier = "";
time = 0;
}
string getIdentifier(){
return identifier;
}
int getTime(){
return time;
}
void setTime(int time){
this->time = time;
}
void setIdentifier(string identifier){
this->identifier = identifier;
}
friend ostream &operator<<(ostream &o, const Process &p);
};
ostream &operator<<(ostream &o, const Process &p){
o<<"Identifier: "<<p.identifier<<"\n";
o<<"Time:"<<p.time<<"\n";
return o;
}
第一个代码的输出是:Time = 80。我应该是 Time = 50,但时间没有被修改。
【问题讨论】:
-
您的函数返回值的副本,而不是引用,因此对该值的任何修改都不会影响原始值。
-
如何才能退回原件?
-
你知道什么是引用,以及如何使用它们吗?
-
我做了这个函数: L getElementByReference() { L *pointer = &this->elem;返回*指针; }
-
这能回答你的问题吗? C++ variables not changing as intended
标签: c++ class getter-setter access-modifiers modifier