c ++中的不完整类型

时间:2012-03-29 01:19:02

标签: c++

我在c ++中声明了DynArray var_name,但是在编译它时会给我一个错误“不允许不完整的类型” 我试图搜索,但没有提出动态数组的例子。 有人可以解释一下这个错误吗? 感谢。

2 个答案:

答案 0 :(得分:2)

如果要在标题文件x中为类C定义成员变量C.h,则必须包含类X的标题({{1在X.h中。}但是,如果您只是将C.h的指针存储为X的成员,那么您可以在声明C之前转发声明class X;,然后在定义文件中转发class C{...}; { {1}},如果您访问C.cpp的任何成员,则必须包含X.h

答案 1 :(得分:0)

“不允许不完整的类型”通常意味着已经声明了一个类,但是在需要完整定义的时候没有定义它。

这有时会因为标题中的循环依赖而发生,

A类的定义取决于B类的定义,反之亦然 - 导致Ah包含Bh,然后Bh尝试包含Ah但不能因为标题保护已经定义,所以它跳过了,但后来只得到了A的fwd decl。