1
我喜歡在頭文件中編寫我的類聲明並稍後定義它:稍後在頭文件中,如果我希望某些內容能夠被內聯,或者在cpp中。這樣我就可以保持我的課堂聲明整潔而簡單。如何在類中聲明一個類並稍後定義它?
不過,我想打一個類(迭代器)
內部類可以聲明它在類中,後來界定呢? 如何?
我喜歡在頭文件中編寫我的類聲明並稍後定義它:稍後在頭文件中,如果我希望某些內容能夠被內聯,或者在cpp中。這樣我就可以保持我的課堂聲明整潔而簡單。如何在類中聲明一個類並稍後定義它?
不過,我想打一個類(迭代器)
內部類可以聲明它在類中,後來界定呢? 如何?
是的,你只需要添加的名稱包含類的,然後範圍解析操作,::
,內部類的名稱,這樣
// 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();
沒有(實際)限制到你可以擁有多少嵌套類,並且你只要繼續添加::
就可以更進一步。
但是它必須知道所有的方法和成員?我不能只在類中寫'class SomeIterator'? – xcrypt 2011-12-21 01:23:32
@xcrypt,它將與'class SomeIterator幾乎相同; class A {...};'除了前面的聲明在類'A'的聲明之外是不可見的。所以,不,你不能做以上只是用'class SomeIterator';' – 2011-12-21 01:25:49
@xcrypt這就像做'void a(){void b(); }'它並不是說函數'b'在'a'內部,它只是一個函數的前向聲明,它在a之外,與'void b()'相同。 void a(){}'除了'a'之外的東西不能看到前向聲明。 – 2011-12-21 01:28:36