2011-12-21 93 views
1

我喜歡在頭文件中編寫我的類聲明並稍後定義它:稍後在頭文件中,如果我希望某些內容能夠被內聯,或者在cpp中。這樣我就可以保持我的課堂聲明整潔而簡單。如何在類中聲明一個類並稍後定義它?

不過,我想打一個類(迭代器)

內部類可以聲明它在類中,後來界定呢? 如何?

回答

3

是的,你只需要添加的名稱包含類的,然後範圍解析操作,::,內部類的名稱,這樣

// A.h 

class A { 
public: 
    class B { 
    public: 
     B() { } 

     void dostuff(); 
    }; 

    A() { } 

    void doStuff(); 
}; 

// A.cpp 

void A::doStuff() { 
    // stuff 
} 

void A::B::doStuff() { 
    // stuff 
} 

A a; 
a.doStuff(); 

A::B b; 
b.doStuff(); 

沒有(實際)限制到你可以擁有多少嵌套類,並且你只要繼續添加::就可以更進一步。

+0

但是它必須知道所有的方法和成員?我不能只在類中寫'class SomeIterator'? – xcrypt 2011-12-21 01:23:32

+0

@xcrypt,它將與'class SomeIterator幾乎相同; class A {...};'除了前面的聲明在類'A'的聲明之外是不可見的。所以,不,你不能做以上只是用'class SomeIterator';' – 2011-12-21 01:25:49

+0

@xcrypt這就像做'void a(){void b(); }'它並不是說函數'b'在'a'內部,它只是一個函數的前向聲明,它在a之外,與'void b()'相同。 void a(){}'除了'a'之外的東西不能看到前向聲明。 – 2011-12-21 01:28:36

相關問題