gpt4 book ai didi

visual-c++ - 错误消息 : cannot convert parameter 1 from 'Node *' to 'Node'

转载 作者:行者123 更新时间:2023-12-01 23:26:10 25 4
gpt4 key购买 nike

我正在写一个表达式树。

Node 类有自己的实例作为成员 left、right 和 parent。

感谢James McNellisthis post ,我将它们声明为指针。

   class Node
{
public:
char *cargo;
int depth;
Node *parent;
Node *left;
Node *right;
//constructors/destructor:
Node(void);
Node(int a_depth, Node *pparent = __nullptr);
~Node();
//method:
void traverse_tree(Node n)
};

现在我尝试遍历树并将其打印出来(以归档“out”)。

递归调用'traverse_tree(left);'和“traverse_tree(右);”

导致错误消息“无法将参数 1 从‘Node *’转换为‘Node’”。

Traverse_tree 最初以根节点作为参数被调用。

我认为参数“(Node n)”的声明混淆了编译器,它不知道

是否调用构造函数。

如何将“left”和“right”传递给“traverse_tree”方法?

void Node::traverse_tree(Node n)
//utility to view the tree
{
if (((left) == __nullptr)||((right) == __nullptr))
{
return;
}
traverse_tree(right);
out<<' '<<n.cargo<<"\n";
traverse_tree(left);
return;
};

最佳答案

取消引用你的指针:

traverse_tree(*right);

您可能还想更改您的 traverse_tree 方法以接受引用:

void traverse_tree(Node &n)

关于visual-c++ - 错误消息 : cannot convert parameter 1 from 'Node *' to 'Node' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com