c++ - 对 C++ #include 感到困惑

标签 c++ class hyperlink compilation header

我的项目有这个文件夹结构:

Project/
--Classes/
----Class1.h
----Class1.cpp
--main.cpp

“Class1.h”包含方法定义,“Class1.cpp”是“Class1.h”的源代码。

“Class1.h”的源码是这样的:

class Class1 {
  public:
    void do_something();
};

“Class1.cpp”的源码是这样的:

#include "Class1.h"

void Class1::do_something() {
  //
} 

“main.cpp”的源码是这样的:

#include "Classes/Class1.h"

int main(int argc,char** args) {
  Class1* var = new Class1();
  var->do_something();
  return 0;
}     

但是,在编译“main.cpp”时,编译器并不知道Class1中方法的实现在哪里,所以会出现 undefined reference 的链接错误。

我是否必须在命令行中添加任何路径以便编译器知道它必须编译哪些源文件?如何告诉编译器它也必须编译“Class1.cpp”?

最佳答案

您需要将项目中的所有文件提供给编译器,而不仅仅是“main.cpp”。 Here您可以阅读有关使用 Gcc 编译多个文件的基础知识。

另一种选择是将您的类编译为动态或静态库,但如果您对库不是很熟悉,则应该从简单地将它们编译在一起开始。

关于c++ - 对 C++ #include 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968127/

相关文章:

c++ - 当函数需要对父指针的引用时,不能将子类指针传递给函数,为什么?

javascript - HTML 创建一个包含在新窗口中打开链接的按钮

HTML 图像扩展更远并阻止链接

android - UnwindResume 等链接错误(安卓交叉编译)

c++ - 为 'path agnostic' 包含设置 makefile

c++ - 转换函数有什么意义(C++)

java - 从 Java 中的基类访问子类字段

C++:结构可以从类继承吗?

变量和方法的Java类继承

html - 使用无协议(protocol)绝对链接的外部 Javascript 标签