C ++中的getter和setter问题

问题描述

我在C ++中的获取器和设置器有问题。我实现了一个队列,我还实现了一个类Process。我的队列保存进程。我的班级Process具有两个属性:“标识符”和“时间”,还具有设置方法获取方法。我将时间设置为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;
  }

一个代码输出是:时间=80。我应该是时间= 50,但是时间没有修改

解决方法

我相信您的函数“ getElementFront”将返回您元素的副本,因此您的队列将永远不会受到影响。您可以编写“ setElementFront(int)”之类的函数来直接影响元素或诸如此类。