重载运算符C ++传递非常量参数

时间:2018-11-10 09:52:26

标签: c++ queue

我正在用C ++构建自己的大学数据结构,但是“队列”数据结构存在问题。 特别是当我试图像这样重载赋值运算符时:

Queue& operator=(Queue& C){

   if(this != &C){
     elements = new element_type[C.maxlength];
     maxlength = C.maxlength;
     length = C.length;
     head = C.head;

     if(!C.emptyQueue()){
       for(int i=0; i<length; i++){
         pushQueue(C.readQueue());
       }
       C.pushQueue(C.readQueue());
       C.popQueue();
     }
   }
   return *this;
}

编译者说 “无法将“队列”类型的非常量左值引用绑定到“队列”类型的右值 但是,从我需要修改输入参数的那一刻起(因为要从队列中读取每个值并将其推入新队列,我需要弹出每个元素)我认为必须在不使用const的情况下传递它。 还有另一种方法可以执行此操作,或者我缺少了什么?

1 个答案:

答案 0 :(得分:0)

您的副本分配运算符实际上是一个动作,而不是副本分配。

使用移动分配:

Queue& operator=(Queue&& C){