2012-06-20 96 views
2

我不能從只向前聲明的結構繼承?繼承其向前聲明結構?

例子:

struct A; 
class B : public A {}; 

我收到錯誤 「基類是不確定的」。

能否請你幫我解決這個問題?

謝謝

回答

5

你不能這樣做。首先,當你從一個結構或類繼承時,其大小必須是已知的。但是,如果結構只是向前聲明的,編譯器無法確定大小。編譯器還需要知道超類有哪些類型的成員,例如如果有任何virtual功能等

+4

事實上的類型必須是完整的。需要更多的不僅僅是規模,以被稱爲以確定有效的客艙佈局,成員初始化,構造的虛擬性,反覆基地的虛擬性,名字隱藏/含糊不清等,整個類的聲明需要 – sehe

+0

好吧,我會改正 – Spo1ler

+1

@sehe同意,大小隻是一件需要知道的事情。你如何知道一個方法是否覆蓋了一個虛擬的基類方法? –

3

必須真正包括基類的頭,當你從一個類繼承。遠期聲明是不夠的