C++:2个类如何相互调用而无需重新声明,并且没有标题相互调用

Joh*_*ker 2 c++ oop header-files

我有点问题.我有一个A类实例化B的对象然后B实例化A的对象.这有可能吗?我尝试在每个标题中添加它

#ifndef A
#define A
  class a...
#endif
Run Code Online (Sandbox Code Playgroud)

但是如果让我进入一个无限的头部循环,它到达最大的头部包含,那么显然一个人正在呼叫另一个而另一个正在呼叫那个.有没有办法实现这个目标?

编辑:好的,这似乎是一个很好的答案,但现在A抱怨B没有构造函数,尽管它确实有一个构造函数.我无法想出那一个.

Jam*_*lis 9

您可以转发声明类,例如:

A.h:

class B;

class A
{
    B* a_;
};
Run Code Online (Sandbox Code Playgroud)

B.h:

class A;

class B
{
    A* a_;
};
Run Code Online (Sandbox Code Playgroud)

在你实际使用的类(即,创建它们,消灭它们,使用它们的成员等),您的源文件,则需要包括头,使他们的定义是可供选择:

#include "A.h"
#include "B.h"
Run Code Online (Sandbox Code Playgroud)