[英]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.