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&”。而它就是不能。