字段不是具有前向声明的完整类型。赶上22?

时间:2013-10-25 07:41:41

标签: c++

我需要使用A.h中定义的结构作为方法的参数以及B.h中另一个结构的数据元素。 (我不能在StructB中使用指向StructA的指针,因为它指向的数据最终会发生变化,我需要在StructB中的本地副本中保留原始数据。)

A.H:

struct StructA {
...
}

B.h

#include "A.h" 
struct StructA;

class B {
  method foo (StructA &structA);
  struct StructB {
     ...
     StructA structA
  }

通过在A.h中包含A.h,是否在B.h中提供了StructA的声明?但是,编译器抱怨"字段structA的类型不完整"。

如果我没有向前声明StructA,则编译器会抱怨StructA未在方法foo中声明。所以,很明显,声明在B.h。

中不可用

我在这里遗漏了一些基本的东西,但我无法弄清楚它是否让我疯狂!请帮忙!

1 个答案:

答案 0 :(得分:0)

#include "A.h"确实为B.h提供了完整的类型,然而我的猜测是你有一个循环包含,这就是为什么它不起作用。 A.h是否包含B.h(直接与否)?