是否可以在 C++ 中以间接方式包含头文件

Is that possible to include a header file in an indirect way in C++

首先,我是一个编程初学者。所以在回答之前,请考虑...

假设我有 3 个不同的源代码文件。第一个是foo.cpp,第二个是doo.cpp,第三个是loo.cpp。在 doo.cpp 中,我包含了 foo.h:

的头文件
#include "foo.h"

Doo::Doo(){
//  something
}

在另一个文件 loo.cpp 中,我包含了 doo.h 的头文件:

#include "doo.h"

Loo::Loo(){
//  something
}

我的问题是;在 loo.cpp 中使用,我是否有权从 Foo class 中创建一个对象,该对象在 foo.h,没有包含在 loo.cpp 中,但包含了 doo.h,其中包含了 foo.h。我可以做这样的事情吗? :

#include "doo.h"

Loo::Loo(){
Foo object = new Foo();
}

所以像上面一样,我可以到达 foo.h 而不将其包含在 loo.cpp 中但有另一个源文件已包含在其自己的源文件中 foo.h ?它就像一个间接的,如果可能的话。

注意:我不知道我是否把我的问题解释得如此糟糕,所以请反馈给我,以便我可以编辑我的问题以使其更容易理解。

没有间接的东西,包括你描述它的方式。如果您将 foo.h 包含到 doo.cpp 中,则 foo.h 将仅在 doo.cpp 中可用,而不会在包含 foo.h 的文件中可用。您还需要将 foo.h 包含到 doo.h 中,以使 foo.h 的内容可供 doo.h.

的用户使用

#include只是简单的文字处理,仅此而已。

to use in loo.cpp, will I have access to create an object from the Foo class which is declared in foo.h [...] having included doo.h which has the inclusion of foo.h.

是的。

如果

  • loo.cpp 包括 doo.h
  • doo.h 包括 foo.h

那么 foo.h 也包含在 loo.cpp 中。

你需要原型。如果它们包含在任何翻译单元 (.cpp) 中,您可以通过 运行 其上的预处理器进行检查:cpp foo.cpp 并检查其输出,这实际上是提供给编译器的代码。