c++ - 我想在 C++ 中对单链表进行冒泡排序,但我一直面临左值错误,我无法解决它
问题描述
这是可能帮助您理解我的问题的代码,我正在使用节点类和列表类。这是错误:[Error] lvalue required as left operand of assignment。任何帮助,将不胜感激..!!
class Node{
private:
int data;
Node* next;
public:
void SetNext(Node* next){
this->next=next;
}
void SetData(int data){
this->data=data;
}
Node* GetNext(){
return next;
}
int GetData(){
return data;
}
};
class List{
private:
Node *CurrentLocation;
public:
List(){
CurrentLocation=NULL;
}
void SortList(){
Node *t1,*t2;
int temp;
for(t1=CurrentLocation;t1!=NULL;t1=t1->GetNext()){
for(t2=CurrentLocation;t2!=NULL;t2=t2->GetNext()){
if(t2->GetData()>t1->GetNext()->GetData()){
temp=t2->GetData();
t2->GetData()=t2->GetNext()->GetData();
t2->GetNext()->GetData()=temp;
}
}
}
}
};
解决方案
您正在尝试分配给rvalue
. 这rvalue
是您数据的临时副本。不是原来的。一旦表达式执行,它将被销毁,因此你不能分配给它。
要分配给您的数据,您必须返回对它的引用,如下所示
int& GetData(){
return data;
}
正如 user4581301 所提到的,我建议你看看这个什么是右值、左值、xvalues、glvalues 和 prvalues?
前面的描述是针对问题本身的,但最好为你的数据编写一个设置器,比如你的 getter,如下所示
void setData(int newData){
data = newData;
}
推荐阅读
- entity-framework - 更新/删除实体框架中的子集合
- node.js - 如何从 Node.js 中的分叉子进程正确发送流?
- ios - XCode Mac 催化剂 XCFramework 归档和上传错误:代码签名“A”失败
- python - pow() 运算符与扩展欧几里登算法
- rust - 如何在 Rust 的 lib 中的另一个 mod 中使用 mod?
- c# - 如何将自定义视图动态添加到 Visual Studio for Mac C# 中的视图
- c++ - 视觉工作室代码最终链接上的 Mingw 失败:设备 collect2.exe 上没有剩余空间:错误:ld 返回 1 退出状态
- android - Android Paypal 用户使用 sdk 登录
- gremlin - 如何从 gremlin NoHostAvailableException 重试恢复
- mongodb - 启用 mongo 向后不兼容的 4.0 功能时,正则表达式是无效的 UTF-8