可能重复:
When to use forward declaration?
C++ classes with members referencing each other
我对C ++很陌生,我对下面定义的两种结构有疑问,如下所示。每个结构包含一个指向另一个结构的指针:
struct A{
...
...
B *ptr;
}
struct B{
...
...
A* ptr;
};
但是,由于第二个结构仅在第一个结构之后定义,因此出现编译错误。这有解决方案吗?我试图在头文件中单独声明结构,但它不起作用。任何帮助表示赞赏!感谢。
答案 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;
};