相互依赖的结构声明

时间:2012-10-11 10:00:43

标签: c++ struct declaration

  

可能重复:
  When to use forward declaration?
  C++ classes with members referencing each other

我对C ++很陌生,我对下面定义的两种结构有疑问,如下所示。每个结构包含一个指向另一个结构的指针:

    struct A{
    ...
        ...
    B *ptr;
}

    struct B{
    ...
    ...
    A* ptr;
};

但是,由于第二个结构仅在第一个结构之后定义,因此出现编译错误。这有解决方案吗?我试图在头文件中单独声明结构,但它不起作用。任何帮助表示赞赏!感谢。

2 个答案:

答案 0 :(得分:2)

是的,使用前瞻声明:

struct B;  //forward declare B
struct A{
    ...
        ...
    B *ptr;
};

struct B{
    ...
    ...
    A* ptr;
};

由于成员是指针,因此不需要完整定义 - 声明就足够了。

答案 1 :(得分:2)

在C ++中,为了获得指向类型的指针,您不需要完全定义该类型。你可以直接宣告它。

struct B;
struct A {
    ...
    struct B* ptr;
};
struct B {
    ...
    struct A* ptr;
};