如何在代码中创建两个彼此引用的不同类?

时间:2015-02-12 23:00:21

标签: c++ class

如何在C ++中创建两个在其代码中互相引用的不同类?

看起来像这样;

class A
{
    B b;
}
class B
{
    A a;
}

我在

的行上收到错误
B b;
在A级陈述中

;

错误:' B'未在此范围内声明

休息很简单,因为我没有声明

B b = new B;

在A中,我也没有声明

A a = new A;
在B中

,因为我知道它会导致StackOverflowException。我将使用getter和setter来操作数据。

2 个答案:

答案 0 :(得分:1)

使用前向声明,并使成员指针。使用两个不同的标题最简单,尽管可以在一个标题中完成:

// A.h
class B;

class A
{
    B* m_pB;
};

// B.h
class A;

class B
{
    A* m_pA;
};

然后#include每个.cpp文件中的两个头文件(A.cpp和B.cpp)。

答案 1 :(得分:1)

这可能是你想要的:

class B;
class A
{
    B* b;
}
class B
{
    A* a;
}

请注意,类B被前向声明为类,以便编译器在定义A时知道它是什么。另请注意,A::b指针BB::a指针A(您可能是如果你来自Java背景,则用“引用”表示。如果A::b声明为B类型且B::a声明为A类型,那么每个A对象实际上都包含整个B在它里面的对象和反之亦然,我猜测它不是你想要的(而且显然不可能)。