我对此有点疑问。我有一个类 A,它实例化 B 的一个对象,然后 B 实例化一个 A 的对象。这有可能吗?我试着在每个标题中添加这个
#ifndef A
#define A
class a...
#endif
但是如果让我处于无限标题循环中,它达到最大标题包括,那么显然一个正在调用另一个,另一个正在调用那个。有什么办法可以实现吗?
编辑:好的,这似乎是一个很好的答案,但现在 A 提示 B 没有构造函数,尽管它确实有一个构造函数。我想不通。
最佳答案
您可以转发声明类,例如:
A.h
:
class B;
class A
{
B* a_;
};
B.h
:
class A;
class B
{
A* a_;
};
在您实际使用这些类的源文件中(即创建它们、销毁它们、使用它们的成员等),您需要包含两个 header 以便它们的定义可用:
#include "A.h"
#include "B.h"
关于C++:两个类如何在不重新声明且没有 header 相互调用的情况下相互调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155990/