2012-01-01 13 views

回答

14

像這樣:

// 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),一切都很好。

+0

注意:如果'Foo'的用戶需要與'FooInner'交互,那麼他們顯然也需要內部類的定義。 – 2012-01-01 14:55:17

1

您可以將'outer'指定爲「public class outer」,並將其定義和「內部」定義放入「class.java」文件中,而outer中的代碼可以實例化inner,就好像inner是in一個不同的源文件。目前尚不清楚這是什麼,因爲你沒有解釋爲什麼你想要一個「內部」的課堂。

+0

OP刪除了ambigous Java標記,問題不在於C++。 – 2012-01-01 14:40:59

相關問題