2017-06-04 4 views
2

は、時々私は、ネストされたクラスのためforeward宣言を使用します。前方宣言の誤った使用ですか?

class A; 

class B 
{ 
    private: 
    A* object_A; 
    public: 
    B(){} 
}; 

質問:私は今、クラスCにuseageのクラスBBを宣言し、この時点で定義されている)の宣言を前方に使用した場合はどうなりますか?クラスの前方宣言で使用されているので、これはクラスBの問題を引き起こしますか?(メソッドの実装などで)定義されていますか?次のコードスニペットの構文class B;は、以前宣言され、定義され、実装されたクラスBを何らかの形で上書きしますか?

class B; 

class C 
{ 
    private: 
    B* object_B; 
    public: 
    C(){} 
}; 
+0

どうかお試しください。 –

+0

働くようです。しかし、おそらく私はすべての結果を見ていない。 – Lemonbonbon

+2

「前方宣言の間違った使用」はありません。もしコンパイラが完全な型*を必要とするならば、それはあなたに伝えます。 – EJP

答えて

3

構文クラスBをありません。次のコードスニペットでは、以前に宣言され、定義され、実装されたクラスBを何とか上書きしますか?

フォワード宣言は上書きではありません。型定義がどこかで実装されていることをコンパイラに伝えるだけです。ユーザー定義のポインタ型の場合、コンパイラは定義を必要としませんが、オブジェクトの型が何であるかを知る必要があります。

関連する問題