2012-01-01 3 views

答えて

14

#include "foo.hpp" 
#include "foo_inner.hpp" 

void Foo::bar() { /* ... */ } 
void Foo::Inner::func() { /* ... */ } 

(注)のクラス定義内で不完全なタイプFoo::Innerを使用することができます。

// foo.hpp 

class Foo 
{ 
public: 
    class Inner; 
    Foo(); 
    void bar(); 
    Inner zoo(); 
}; 

// foo_inner.hpp 

#include "foo.hpp" 

class Foo::Inner 
{ 
    void func(); 
}; 

次に、実施中Foo (すなわち、 foo.hpp)には、不完全なタイプの通常の制限が適用されます。 Innerは、関数の戻り値の型、関数の引数、参照、またはポインタとして表示されることがあります。クラスFooのメンバ関数の実装がFoo::Innerfoo_inner.hppを含む)のクラス定義を参照できる限り、すべて正常です。

+0

注意: 'Foo'のユーザが' FooInner'と対話する必要がある場合、明らかに内部クラス定義も必要です。 –

1

「外部クラス」を「public class outer」と指定し、その定義と「内部」定義を「class.java」ファイルに入れることができます。外側のコードはinnerが内部にあるかのように内部をインスタンス化できます別のソースファイル。あなたがなぜ「内部」クラスを望んでいるのか説明していないので、あなたが何をしているのかは分かりません。このよう

+0

OPはあいまいなJavaタグを削除しましたが、問題はC++だけではありません。 –

関連する問題