2012-06-20 100 views
2

我不能从只向前声明的结构继承?继承其向前声明结构?

例子:

struct A; 
class B : public A {}; 

我收到错误 “基类是不确定的”。

能否请你帮我解决这个问题?

谢谢

回答

5

你不能这样做。首先,当你从一个结构或类继承时,其大小必须是已知的。但是,如果结构只是向前声明的,编译器无法确定大小。编译器还需要知道超类有哪些类型的成员,例如如果有任何virtual功能等

+4

事实上的类型必须是完整的。需要更多的不仅仅是规模,以被称为以确定有效的客舱布局,成员初始化,构造的虚拟性,反复基地的虚拟性,名字隐藏/含糊不清等,整个类的声明需要 – sehe

+0

好吧,我会改正 – Spo1ler

+1

@sehe同意,大小只是一件需要知道的事情。你如何知道一个方法是否覆盖了一个虚拟的基类方法? –

3

必须真正包括基类的头,当你从一个类继承。远期声明是不够的