2017-06-26 12 views
-5

私はJavaで、次のコードを書きました"エラー:フィールド '左'に不完全な型 'ノード'があります。 誰もこのことが起こっていることを説明できますか?このエラーを削除するにはどうすればよいですか?私はこれら2つの言語がどのようにこれを実装しているのか知りたい。違い、Javaのクラスとオブジェクトの実装ではとC++

+0

C++では、あなたがJavaで持っている 'node left、right; 'と同じことを達成するためにポインタを使う必要があります。例えば。 'ノード*左、右;'。 Btwの場合は、クラス名を 'node'ではなく' node'でなければなりません。 –

+2

@DatNguyenその宣言は 'left'をポインタとして宣言するだけです。クラス名の最初の文字の大文字/小文字は、個人的な好みや会社のスタイルガイドまでです。 –

+7

C++はJavaではありません。 C++コードを記述する際にJavaをモデルとして使用しないでください。 – PaulMcKenzie

答えて

6

Javaでは、オブジェクト型の変数を宣言すると、実際にオブジェクトに対してという参照番号として宣言されます。 C++では

node left; 

として宣言されたオブジェクトは、leftnodeクラスの実際のインスタンスであると述べています。また、インスタンスを定義できるようにするには、クラスの完全な定義が必要です。

クラス内で、メンバー変数と関数を宣言すると、クラスは実際にはまだ完全に定義されていませんが、終了するまでは発生しません。}

1をする必要がある場合

node* left; 

にポインタが最も一般的である、

node& left; 

または使用のポインタのように、あなたが&文字を使用する必要が参照する変数を宣言するには参照へのセマンティクスは初期化されると参照を別のオブジェクトを参照するように変更することができないためです。

これはすべて、in any good beginners C++ bookである必要があります。これは1つを見つけて読むことをお勧めします。

関連する問題