如何声明彼此引用的类?

时间:2010-03-23 20:52:34

标签: c++ class reference include

自从我完成C ++以来已经很长时间了,而且我遇到了相互引用类的麻烦。

现在我有类似的东西:

A.H

class a
{
  public:
    a();
    bool skeletonfunc(b temp);
};

b.h

class b
{
  public:
    b();
    bool skeletonfunc(a temp);
};

由于每个人都需要引用另一个,我发现我不能在顶部做彼此的#include,或者我最终会在包含奇怪的循环中进行。

那么我怎样才能使a可以使用b而反之亦然而不会产生周期性的#include问题?

谢谢!

2 个答案:

答案 0 :(得分:8)

您必须使用Forward Declaration

A.H

class b;
class a
{
  public:
    a();
    bool skeletonfunc(b temp);
}

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

答案 1 :(得分:2)