我會寫一個頭文件,它會很長。因爲它太複雜了,我不想把內部類定義放在根類中。我的意思是我怎麼可以在不寫入根的情況下創建一個類內部類。如何在不將內部類定義爲父類的情況下創建內部類?
class outer
{
}
class inner
{
}
如果我可以這樣使用,我認爲頭文件會更清晰。
我會寫一個頭文件,它會很長。因爲它太複雜了,我不想把內部類定義放在根類中。我的意思是我怎麼可以在不寫入根的情況下創建一個類內部類。如何在不將內部類定義爲父類的情況下創建內部類?
class outer
{
}
class inner
{
}
如果我可以這樣使用,我認爲頭文件會更清晰。
像這樣:
// foo.hpp
class Foo
{
public:
class Inner;
Foo();
void bar();
Inner zoo();
};
// foo_inner.hpp
#include "foo.hpp"
class Foo::Inner
{
void func();
};
然後,在執行:
#include "foo.hpp"
#include "foo_inner.hpp"
void Foo::bar() { /* ... */ }
void Foo::Inner::func() { /* ... */ }
請注意,您可以使用不完全類型Foo::Inner
的類定義中Foo
(即在foo.hpp
)受限於不完整類型的常規限制,例如Inner
可能會作爲函數返回類型,函數參數,引用或指針出現。只要類Foo
的成員函數實現可以看到Foo::Inner
的類定義(包括foo_inner.hpp
),一切都很好。
您可以將'outer'指定爲「public class outer」,並將其定義和「內部」定義放入「class.java」文件中,而outer中的代碼可以實例化inner,就好像inner是in一個不同的源文件。目前尚不清楚這是什麼,因爲你沒有解釋爲什麼你想要一個「內部」的課堂。
OP刪除了ambigous Java標記,問題不在於C++。 – 2012-01-01 14:40:59
注意:如果'Foo'的用戶需要與'FooInner'交互,那麼他們顯然也需要內部類的定義。 – 2012-01-01 14:55:17