java和C+中类和对象实现的差异+;
我用java编写了以下代码:java和C+中类和对象实现的差异+;,java,c++,oop,Java,C++,Oop,我用java编写了以下代码: class node{ int key; node left ,right; public node(int item ){ key = item; left = right = NULL; } 它在java中工作得很好,但是当我尝试在C++中实现同样的事情时,它显示了一个错误:“错误:字段左”没有完整的类型“节点”。 有人能解释这是怎么发生的吗?我能做些什么来消除这个错误?我想知道这两种语言是如何实现的。在Java中,当您声明某个对象类型的
class node{
int key;
node left ,right;
public node(int item ){
key = item;
left = right = NULL;
}
它在java中工作得很好,但是当我尝试在C++中实现同样的事情时,它显示了一个错误:“错误:字段左”没有完整的类型“节点”。
有人能解释这是怎么发生的吗?我能做些什么来消除这个错误?我想知道这两种语言是如何实现的。在Java中,当您声明某个对象类型的变量时,实际上只将其声明为对该对象的引用。在C++中,一个声明为的对象
node left;
表示left
是节点
类的实际实例。为了能够定义实例,需要类的完整定义
在类内部,当声明成员变量和函数时,该类实际上还没有完全定义,直到关闭}
时才会发生
要将变量声明为引用,需要使用&
字符,如
node& left;
或者使用指针,如
node* left;
当需要链接到对象时,指针是最常见的,因为引用的语义是这样的,一旦初始化,引用就不能更改为引用另一个对象
这一切,以及更多,应该是,我建议你找到并阅读其中一个。
C++中,你必须使用指针来实现与<代码>左、右节点相同的事情;<代码>您在Java中拥有的。例如,节点*左、右代码>。顺便说一句,您应该将类命名为节点
,而不是节点
@DatNguyen,该声明仅将左
声明为指针。类名中第一个字符的上下小写是个人喜好或公司风格指南。C++不是java。请不要用java作为C++代码的模型。