簡體   English   中英

重載賦值運算符 C++ 傳遞非常量參數

[英]Overload assignment operator C++ passing non-const parameter

我正在用 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;
}

編譯器說“不能將'Queue&'類型的非常量左值引用綁定到'Queue'類型的右值”但是,從我需要修改輸入參數的那一刻起(導致從隊列中讀取每個值並將其推入新隊列,我需要彈出每個元素)我認為必須在沒有 const 的情況下傳遞它。 有沒有其他方法可以做到這一點,或者我錯過了什么?

你的復制賦值運算符實際上是一個移動,而不是一個復制賦值。

使用移動分配:

Queue& operator=(Queue&& C){

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM