我有一个问题,我有几个头文件,我需要包括他们每个人在对方。显然,这是不能做到的,因为当我编译时,会抛出错误“include nested too deeply” - 因为这基本上要求编译器输入一个无限循环。头文件和多个类的用法(编辑:转发声明)
我可以使用void指针来修复它,但是这对我来说似乎是不好的编码习惯。
这里是什么,我试图做的,为了帮助理解的例子:
文件-A:
#include "File-B"
#include "File-C"
class A
{
public: B* p_B;
public: C* p_C;
};
文件-B:
#include "File-A"
#include "File-C"
class B
{
public: A* p_A;
public: C* p_C;
};
文件-C:
#include "File-B"
class C
{
public: B* p_B;
};
这只是显示在哪里e ach类声明是必要的。当然有更好的解决方案void*
。
编辑:我已经使用包括卫兵,这段代码只是为了帮助你看看我想要做什么。
你可能已经切换了。首先使用前向声明,然后包含这些文件。当访问或引用其他类中的任何内容时,类定义是必需的。 – 2013-02-24 19:52:20