如何在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来操作数据。
答案 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
是指针到B
,B::a
是指针到A
(您可能是如果你来自Java背景,则用“引用”表示。如果A::b
声明为B
类型且B::a
声明为A
类型,那么每个A
对象实际上都包含整个B
在它里面的对象和反之亦然,我猜测它不是你想要的(而且显然不可能)。