如何在C ++中转发引用/声明以避免循环头文件引用?

我在头文件中有#ifndef保护,但是内存告诉我我需要这个前向引用的东西 - 我之前用过<!> gt; <!> lt;但不记得是怎么回事。

有帮助吗?

解决方案

你预先宣布了这个课程而不包括它。例如:

//#include "Foo.h" // including Foo.h causes circular reference
class Foo;

class Bar
{
...
};

其他提示

我相信你所说的正确用语是<!> quot; forward declaration <!> quot;。 <!>“;前向引用<!>”;会有点混乱。

如果您拥有#ifndef警卫,则不会获得循环头文件引用。这才是重点。

前向引用用于避免#include(ing)仅由指针或引用使用的对象的头文件。但是,在这种情况下,您没有解决循环引用问题,您只是在练习良好的设计并将.h文件与其不需要知道的细节分离。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top