C++ C++;如何初始化?

C++ C++;如何初始化?,c++,C++,添加:我试过下面的fun有人知道错误是什么吗 struct node { string info; node *link; node() { info = "string"; link = NULL; } }; void fun( node &node) { if (node.link !=NULL) { fun (node.link); } } 在函数中使用时,我会收到一条错误消息: invalid ini

添加:我试过下面的
fun
有人知道错误是什么吗

struct node {

  string info;
  node *link;
  node() {
    info = "string";
    link = NULL;

  }

};

void fun( node &node) {

     if (node.link !=NULL) {  
      fun (node.link);
    }

}
在函数中使用时,我会收到一条错误消息:

invalid initialization of reference of type ‘node&’ from expression of type ‘node*’

初始化它的正确方法是什么?

您试图传递的是指针,而不是实际的对象引用。只需按如下方式取消对指针的引用:

void fun( node &node) {

     if (node.link !=NULL) {  
      fun ( *(node.link) );
    }

这个错误显然是指你没有(准确地)向我们展示的代码。我们猜猜你的函数是什么样子的吗?+1给提问者一个完成问题的机会。问题似乎不在显示的部分。你确定错误消息指的是你给我们看的这部分代码吗?@vsz:这不是upvotes的目的。@Troubadour:然后投票重新打开,投票决定将来解决这个问题。为什么会这样?这里发生了什么?@Mark simple:
link
是一个指针(一个
节点*
)。您的函数采用引用(一个
节点
)。调用
*(node.link)
会取消对指针的引用(获取
节点*
指向的
节点)。但为什么错误会抱怨初始化?另外,当我取消引用时,它仍然是引用节点吗?按照“fun”函数的声明方式,预期参数是对节点的引用。您试图给它一个指向不兼容节点的指针。“*(node.link)”语句只是告诉编译器使用指针“node.link”指向的对象,该指针与所需参数兼容。初始化错误是因为编译器试图从提供的“node*”创建“node&”。而它就是不能。