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 放入示例代码
我喜欢用元信息代替实际信息的游戏,所以我们不说具体的类,而是用 对您的某些代码问题的更具描述性的示例将很有价值。
一般尝试执行以下操作:
每个标头应仅包含其自己的同名类。 如果一个类正在使用另一个类,并且您可以在该标头中向前声明它,请执行此操作。如果该类具有另一个类的实例或者它是否派生自另一个类,则您不能向前声明。
编译单元 (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 :(