我正在用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的情况下传递它。 还有另一种方法可以执行此操作,或者我缺少了什么?
答案 0 :(得分:0)
您的副本分配运算符实际上是一个动作,而不是副本分配。
使用移动分配:
Queue& operator=(Queue&& C){