3 个 .h 和 3 个 .cpp 文件

Posted

技术标签:

【中文标题】3 个 .h 和 3 个 .cpp 文件【英文标题】:3 .h and 3 .cpp files 【发布时间】:2011-03-04 12:21:23 【问题描述】:

我正在构建一个应用程序,它应该在 2.h 中使用 1.h 中的一个类,它的定义如下:

<classname> *p;

现在我可以在 2.cpp 中使用 p。但我也想在 3.cpp 中使用它。我无法在 3.cpp 中包含 2.h。有没有办法让它在 3.cpp 中可见?

感谢您的帮助。

【问题讨论】:

请解释为什么您“不能在 3.cpp 中包含 2.h”。因为这应该是您问题的答案。 您可以在任何.cpp 中包含任何.h。否则你就做错了。 你的.h文件是否定义了相应.cpp文件的接口?当你只定义这样一个接口时,你应该能够解决问题。 更多概括。删除符号并在必要时使用 Foos 和 Bars 或 A B 和 C 放入示例代码 我喜欢用元信息代替实际信息的游戏,所以我们不说具体的类,而是用 代替 what 2 个标题,我们谈到 2 个标头,现在下一个级别是:假设我们有一个源代码 f(x),使用某种语言 Y,其中 x 是我们想要对 2 个数据源执行操作 Z 的字节索引,并假设一些出现错误E,如何解决这个问题? 【参考方案1】:

对您的某些代码问题的更具描述性的示例将很有价值。

一般尝试执行以下操作:

每个标头应仅包含其自己的同名类。 如果一个类正在使用另一个类,并且您可以在该标头中向前声明它,请执行此操作。

如果该类具有另一个类的实例或者它是否派生自另一个类,则您不能向前声明。

编译单元 (cpp) 文件应包含所需的所有头文件。理想情况下,首先包含自己的标题。

【讨论】:

【参考方案2】:

您需要提供更多信息,但我想我明白了 您尝试在已定义的标头中使用类 I. 另一个标头,但由于某种原因,您不能将它定义的标头包含到您正在处理的标头中。解决方案是创建一个“临时”定义而不是包含。

例如: 你需要 myClassA 在 1.h 但它是在 2.h 中定义的,并且一些错误不允许你将 2.h 包含到 1.h 中来解决它。 写:

类 myClassA;

在1.h之上所以你可以引用它,但没有实现(因为它是在2.cpp中实现的)

【讨论】:

【参考方案3】:

一个简单的规则是一个类,一个头文件。

给定:

A.h:
class A

;

B.h:
#include "A.h"
class B

  A obj;
;

C.h:
#include "A.h"
class C

  A obj;
;

我希望这能回答这个问题。否则,请使用更多详细信息和您想要完成的示例来编辑您的问题。

【讨论】:

以上是关于3 个 .h 和 3 个 .cpp 文件的主要内容,如果未能解决你的问题,请参考以下文章

第一次在一个项目中使用 .h 和多个 .cpp 文件,errorssss :(

将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中

CPP 将类写入/读取到二进制文件中

球将cpp和h批量转成Unicode的工具

关于include头文件的问题

Qt动态链接库的创建和使用