无法使用“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 = &amp;head;

这是因为 head 是一个 const 引用,您不能将它分配给普通的 cur(即 NODE*)。

【讨论】:

以上是关于无法使用“const Node *”类型的右值初始化“Node *”类型的变量的主要内容,如果未能解决你的问题,请参考以下文章

无法使用“value_type *”类型的右值(又名 char*)初始化“const unsigned char *”类型的参数

为啥 C++ 不能用“超类”类型的右值初始化“派生类”类型的变量?

从“A”类型的右值初始化“A&”类型的非常量引用无效[重复]

为什么`std :: pair`允许使用用户定义的删除移动构造函数从类类型的右值初始化?

错误:对类型为'const ItemInstance'的引用无法绑定到类型为'void'的右值

为啥按值捕获 std::istringstream 的右值的 Op 无法满足 Accumulateable 概念?