"no match for 'operator='" 在 C++ 中,尝试制作链表
"no match for 'operator='" in c++, trying to make a linked list
我正在使用代码::块编写一个C++程序。我想列出一份双重链接的清单。
我的计划是创建一个名为geoPoint
的节点类,该类具有指向其他节点的指针north
和south
。我已经编写了一个测试函数来创建和链接两个节点,然后使用第三个节点遍历它们。到目前为止,我拥有的是:
#include <iostream>
#include <string>
using namespace std;
class geoPoint
{
public:
geoPoint *north, *south;
private:
string description;
public:
void showDesc()
{
cout << description << endl;
};
void setDesc(string sourceText)
{
description=sourceText;
};
void setNorth(geoPoint sourcePoint)
{
north= &sourcePoint;
}
void setSouth(geoPoint sourcePoint)
{
south= &sourcePoint;
}
};
int main()
{
geoPoint testPoint,testPoint2,currentPoint;
string sourceText("testPoint");
string sourceText2("testPoint2");
testPoint.setDesc(sourceText);
testPoint2.setDesc(sourceText2);
testPoint.setNorth(testPoint2);
testPoint2.setSouth(testPoint);
currentPoint=testPoint;
currentPoint.showDesc();
currentPoint= ¤tPoint.north;
currentPoint.showDesc();
cin.get();
return 0;
};
main()
在到达线路currentPoint= ¤tPoint.north;
时崩溃。错误消息为:error: no match for 'operator=' in 'currentPoint = & currentPoint.geoPoint::north'
我认为a=&b
是将指针b
的未引用内容分配给变量a
的正确方法。我做错了什么?
currentPoint
属于geoPoint
类型。CCD_ 12属于CCD_。&
是运算符的地址:您取的是geoPoint*
的地址,它存储geoPoint
的地址。
如果希望currentPoint
保存currentPoint.north
所引用的geoPoint
的副本,请使用取消引用运算符*
,如*currentPoint.north
中所示。但是,如果您只想引用对象而不复制它,请将currentPoint
更改为geoPoint*
,并改为写以下内容:
currentPoint = currentPoint->north;
在函数setNorth
和setSouth
中,您正在获取临时对象的地址(参数(。一旦函数返回,此指针将无效。
你有没有打算写
currentPoint= *currentPoint.north;
相关文章:
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 链表,反向函数,数据结构
- 使用std::list创建循环链表
- 链表的泛型函数remove()与成员函数remove)
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 我们可以删除链表中静态内存中的节点吗
- C++,指针数组,指向双链表中的条目
- 链表中写入访问冲突的未知原因
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- 打印所有链表的元素 (C++)
- 错误:需要类名(链表c++)
- 为什么C中的通用链表中存储的数据已损坏
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 链表c++插入,所有情况都已检查,但没有任何工作
- 链表,将列表复制到另一个列表
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- "no match for 'operator='" 在 C++ 中,尝试制作链表