gpt4 book ai didi

c++ - C++ 中的节点类

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:19 29 4
gpt4 key购买 nike

C++ 新手。我正在尝试在 C++ 中创建一个节点类(而不是结构)。并练习一些各种树的实现。

我的头文件

#ifndef  NODE_H
#define NODE_H
class Node{
private:
Node *left,*right;
int data;
Node(){}
public:
Node(int data);
};
#endif

定义类

#include "Node.h"

Node::Node(int data) {
this->data = data;
this->left = NULL;
this->right = NULL;
}

我的测试:

#include "Node.h"
int main(int argc, char *argv[]){
Node n = new Node(2);

}

错误: 在函数“int main(int, char**)”中:

/home/fraz/ClionProjects/algorithms/BinaryTest.cpp:3:24: error: invalid conversion from ‘Node*’ to ‘int’ [-fpermissive]
Node n = new Node(2);
^
In file included from /home/mohit/ClionProjects/algorithms/BinaryTest.cpp:1:0:
/home/fraz/ClionProjects/algorithms/Node.h:9:5: note: initializing argument 1 of ‘Node::Node(int)’
Node(int data);
^

是的,我还有很长的路要走。

最佳答案

new Node(2);

这将返回一个 Node*,而不是一个 Node。错误消息令人困惑,因为像这样的初始赋值可以由单参数构造函数处理。所以它正在寻找一个 Node(Node*) 构造函数来将 Node* 提供给但它能看到的唯一构造函数是 Node(int)并且无法隐式Node* 转换为 int

如何解决这个问题取决于你想要什么:

如果你想要一个指向 Node 的指针(最有可能),那么你可以复制那个指针,然后你想写:

Node* n = new Node(2);

相反,如果您想创建一个函数本地的 Node 对象,而不是动态分配的,您需要:

Node n(2);

关于c++ - C++ 中的节点类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209761/

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