2017-06-26 35 views
-5

我寫在java中下面的代碼:差異實現的類和Java對象和C++

class node{ 
    int key; 
    node left ,right; 
    public node(int item){ 
    key = item; 
    left = right = NULL; 
} 

它在Java的罰款,但是當我試圖實現在C++中同樣的事情,它顯示了一個錯誤說:「錯誤:字段'左'具有不完整的類型'節點'」。 任何人都可以解釋這是怎麼發生的?我能做些什麼來消除這個錯誤?我想知道這兩種語言是如何實現這一點的。

+0

在C++中,您必須使用指針實現與Java中的'node left,right;'節點相同的操作。例如。 'node * left,right;'。順便說一句,你應該命名你的類'節點'而不是'節點'。 –

+2

@DatNguyen該聲明只聲明'left'作爲指針。並且類名中第一個字符的大小寫取決於個人偏好或公司風格指南。 –

+7

C++不是Java。在編寫C++代碼時請不要將Java用作模型。 – PaulMcKenzie

回答

6

在Java中,當您聲明某個對象類型的變量時,您實際上只聲明它爲參考。在C++中,對象聲明爲

node left; 

left是一個實際的實例node。爲了能夠定義一個實例,需要完整定義該類。

在類中,聲明成員變量和函數時,類實際上還沒有完全定義,直到關閉}纔會發生。

要聲明一個變量是你需要使用&字符的參考,像

node& left; 

或者使用指針,如

node* left; 

指針是最常見的,當一個人需要鏈接到對象,因爲引用的語義是這樣的,一旦初始化引用不能被改變爲引用另一個對象。

所有這些,以及更多,應該是in any good beginners C++ book,我建議你找到並閱讀一個。