4

如何在 C++ 中进行前向引用/声明以避免循环头文件引用?

我在头文件中有#ifndef 保护,但记忆告诉我我需要这个前向引用的东西——我以前用过 >< 但不记得怎么用了。

4

3 回答 3

15

您预先声明了该类而不包括它。例如:

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

class Bar
{
...
};
于 2008-10-08T17:32:04.287 回答
1

我相信您所说的正确术语是“前向声明”。“前向引用”会有点混乱。

于 2008-10-08T22:45:32.733 回答
-2

如果您有#ifndef 保护,您将不会获得循环头文件引用。这才是重点。

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

于 2008-10-08T17:33:19.743 回答