私はヘッダファイルを書きますが、それは非常に長くなります。複雑すぎるので、私はルートクラスに内部クラス定義を入れたくありません。クラス。内部クラスの定義を親クラスに入れずに内部クラスを作る方法は?
class outer
{
}
class inner
{
}
私がこのように使うことができれば、ヘッダーファイルは私が考えると明らかになります。
私はヘッダファイルを書きますが、それは非常に長くなります。複雑すぎるので、私はルートクラスに内部クラス定義を入れたくありません。クラス。内部クラスの定義を親クラスに入れずに内部クラスを作る方法は?
class outer
{
}
class inner
{
}
私がこのように使うことができれば、ヘッダーファイルは私が考えると明らかになります。
:
#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::Inner
(foo_inner.hpp
を含む)のクラス定義を参照できる限り、すべて正常です。
「外部クラス」を「public class outer」と指定し、その定義と「内部」定義を「class.java」ファイルに入れることができます。外側のコードはinnerが内部にあるかのように内部をインスタンス化できます別のソースファイル。あなたがなぜ「内部」クラスを望んでいるのか説明していないので、あなたが何をしているのかは分かりません。このよう
OPはあいまいなJavaタグを削除しましたが、問題はC++だけではありません。 –
注意: 'Foo'のユーザが' FooInner'と対話する必要がある場合、明らかに内部クラス定義も必要です。 –