1

可能重复:
何时使用前向声明?
成员相互引用的 C++ 类

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

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

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

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

4

2 回答 2

2

是的,使用前向声明:

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

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

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

于 2012-10-11T10:01:36.713 回答
2

在 C++ 中,为了获得指向类型的指针,您不需要对该类型的完整定义。你可以转发声明它。

struct B;
struct A {
    ...
    struct B* ptr;
};
struct B {
    ...
    struct A* ptr;
};
于 2012-10-11T10:03:43.500 回答