【发布时间】:2023-03-10 12:35:01
【问题描述】:
我有一个包含一个主类和 2 个类的生成文件。问题是一个类依赖于另一个类,但是当我这样做时,它无法识别另一个类。这是我的 makefile 中的一个示例。
main : main.o class1.o class2.o
g++ main.o class1.o class2.o -o main
main.o : main.cpp class1.h class2.h
g++ -c main.cpp
class2.o : class2.cpp class2.h class1.h
g++ -c class2.cpp
class1.o : class1.cpp class1.h class2.h
g++ -c class1.cpp
当我制作时,终端一直告诉我在 class1 中没有 class2 这样的类型,反之亦然。
【问题讨论】:
-
请发布错误,以及生成错误的命令。无论是失败的编译还是链接,都会产生巨大的差异。但是,我怀疑您在
class2.cpp文件中没有#includedclass1.h文件,反之亦然。 -
“它无法识别其他类” - 不管您认为 “It” 是什么,C++ 都不是这样工作的。你让事情为人所知,没有任何认可。
-
错误是“在从 class1.h:6.0 包含的文件中,来自 main.cpp:1: class2.h:13:12: 错误“Class1”没有命名类型”。正如我之前所说,这两个类的#include 都存在于 cpp 和头文件中(即使它不是必需的)。
-
如果我更改 makefile 中的顺序,也会发生这种情况。
-
可能在全局命名空间中没有
Class1类型(符号在C++ 中区分大小写)。指示您的编译器将预处理的输入写入文件以查看发生了什么。并在这里发布一个最小的测试用例。