无法使用“const Node *”类型的右值初始化“Node *”类型的变量
Posted
技术标签:
【中文标题】无法使用“const Node *”类型的右值初始化“Node *”类型的变量【英文标题】:cannot initialize a variable of type 'Node *' with an rvalue of type 'const Node *' 【发布时间】:2019-11-07 03:08:04 【问题描述】:这里有什么问题,&head 应该产生一个指向节点的指针,这是 cur 的类型,但显然存在类型不匹配?
我正在尝试使用其头部打印链表的元素
void printList(const Node& head)
Node* cur = &head;
cout<<"[ ";
while(!(cur==0))
cout<<cur->x<<" ";
cur = cur->next;
cout<<"]"<<endl;
是错误
【问题讨论】:
Head 是常量引用。您不能将其分配给非 const 变量。 将cur
的类型改为const Node*
。
【参考方案1】:
做
Node* cur = head;
或者
const Node* cur = &head;
这是因为 head 是一个 const 引用,您不能将它分配给普通的 cur(即 NODE*)。
【讨论】:
以上是关于无法使用“const Node *”类型的右值初始化“Node *”类型的变量的主要内容,如果未能解决你的问题,请参考以下文章
无法使用“value_type *”类型的右值(又名 char*)初始化“const unsigned char *”类型的参数
为啥 C++ 不能用“超类”类型的右值初始化“派生类”类型的变量?
从“A”类型的右值初始化“A&”类型的非常量引用无效[重复]
为什么`std :: pair`允许使用用户定义的删除移动构造函数从类类型的右值初始化?