如何声明相互引用的类? 自从我做C++以来,已经有很长一段时间了,我在遇到相互引用的类时遇到了一些麻烦。

如何声明相互引用的类? 自从我做C++以来,已经有很长一段时间了,我在遇到相互引用的类时遇到了一些麻烦。,c++,class,reference,include,C++,Class,Reference,Include,现在我有一些类似于: a、 h b、 h 因为每一个都需要一个对另一个的引用,我发现我不能在顶部对彼此进行包含,否则我会在包含的地方陷入一个奇怪的循环 那么,我怎样才能使a可以使用b,反之亦然,而不产生周期性的包含问题呢 谢谢 您必须使用: a、 h 但是,在许多情况下,这可能会迫使您在方法调用或成员变量中使用引用或指针,因为不能在两个类头中都使用完整的类型。如果必须知道类型的大小,则需要使用引用或指针。但是,如果只需要方法声明,则可以使用该类型。使用前向声明:请注意,您需要使用指针或引用引用任

现在我有一些类似于:

a、 h

b、 h

因为每一个都需要一个对另一个的引用,我发现我不能在顶部对彼此进行包含,否则我会在包含的地方陷入一个奇怪的循环

那么,我怎样才能使
a
可以使用
b
,反之亦然,而不产生周期性的包含问题呢

谢谢

您必须使用:

a、 h


但是,在许多情况下,这可能会迫使您在方法调用或成员变量中使用引用或指针,因为不能在两个类头中都使用完整的类型。如果必须知道类型的大小,则需要使用引用或指针。但是,如果只需要方法声明,则可以使用该类型。

使用前向声明:

请注意,您需要使用指针或引用引用任何前向声明的类型,如本例所示(b&temp)。不,原始声明(具有传递值语义)将编译。在方法定义之前需要完整的类声明,但不需要声明方法签名:
class a;f(a)项无效;a类{};void f(a x){…
请参见
class a
{
  public:
    a();
    bool skeletonfunc(b temp);
};
class b
{
  public:
    b();
    bool skeletonfunc(a temp);
};
class b;
class a
{
  public:
    a();
    bool skeletonfunc(b temp);
}