对C++ #include感到困惑

jon*_*ham 0 c++ compilation header class hyperlink

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

Project/
--Classes/
----Class1.h
----Class1.cpp
--main.cpp
Run Code Online (Sandbox Code Playgroud)

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

"Class1.h"的源代码如下:

class Class1 {
  public:
    void do_something();
};
Run Code Online (Sandbox Code Playgroud)

"Class1.cpp"的源代码如下:

#include "Class1.h"

void Class1::do_something() {
  //
} 
Run Code Online (Sandbox Code Playgroud)

"main.cpp"的源代码如下:

#include "Classes/Class1.h"

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

但是,在编译"main.cpp"时,编译器不知道Class1中方法的实现位置,因此它显示了有关未定义引用的链接错误.

我是否必须在命令行中添加任何路径,以便编译器知道它要编译的源文件是什么?如何告诉编译器它还必须编译"Class1.cpp"?

Sin*_*all 5

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

另一个选择是将您的类编译为动态或静态库,但如果您不熟悉库,则应该从简单编译它们开始.