c++ - 在 C++ 中使用继承函数在链表中的某个点插入问题
问题描述
我正在尝试在链表中的某个位置插入一个数字。但是我无法正常访问下一个指针,因为它是私有成员,并且必须使用getNext
函数。我不确定如何用这个函数分配下一个指针,因为它给了我错误。
#pragma once
class IntListNode {
public:
IntListNode(int e, IntListNode *nextptr):
elem(e), next(nextptr) { }
int &getElement() {return elem;}
IntListNode *getNext() {return next;}
private:
int elem; // linked list element value
IntListNode *next; // next item in the list
};
这是我尝试过的代码,但我一直收到错误。
void IntegerList::AddAtPosition(int num, int placement)
{
IntListNode* temp1 = head;
IntListNode* temp2 = head;
temp1->getElement() = num;
if (placement == 0)
{
head = temp1;
}
else
{
for (int i = 0; i < placement - 2; i++)
{
temp2 = temp2->getNext();
}
temp1->getNext() = temp2->getNext();
temp2->getNext() = temp1;
//THe Lines getting errors
}
}
错误信息:
E0137 "表达式必须是可修改的左值"
解决方案
getNext()
将您的方法更改为: IntListNode*& getNext() {return next;}
.
该IntListNode *getNext()
版本将返回next
成员的值,而不是它的地址,因此该行不可修改tempX->getNext() = tempY
:
编辑
根据OP提到的限制/条件,我能想到的唯一方法是:
*temp1 = IntListNode(temp1->getElement(), temp2->getNext());
*temp2 = IntListNode(temp2->getElement(), temp1);
推荐阅读
- vue.js - 如何在 devtools 的 Vue 选项卡中显示数据?
- excel - 将文件名的一部分指定为变量
- css - 带渐变边框的透明圆形按钮
- sql - 需要 SQL 事务协助以在数据库中压缩数据
- python - 通过 pandas 从 JSON 加载文本值
- javascript - 在这种情况下,订阅一个简单的请求是 Angular 2 的正确方法吗?
- node.js - 如何使用 AWS.DynamoDB.DocumentClient 在 ExpressionAttributeValues 中表示数字类型
- bokeh - 如何将散景可视化嵌入到谷歌幻灯片中?
- css - 仅当标题“显示”聚合物时如何具有背景颜色
- ios - 如何从 iOS 和 nodejs 访问 Firestore