这是我一直在关注的教程,我已经完成了它所说的一切,但它不起作用。我有三个文件:main.cpp、burrito.h(类)和 burrito.cpp。
这里分别是三个文件。
主程序
#include <iostream>
#include "Burrito.h"
using namespace std;
int main() {
Burrito bo;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
墨西哥卷饼
#ifndef BURRITO_H
#define BURRITO_H
class Burrito {
public:
Burrito();
};
#endif // BURRITO_H
Run Code Online (Sandbox Code Playgroud)
墨西哥卷饼
#include <iostream>
#include "Burrito.h"
using namespace std;
Burrito::Burrito() {
cout << "Hello World" << endl;
}
Run Code Online (Sandbox Code Playgroud)
当我构建并运行时,出现以下错误:
...undefined reference to `Burrito::Burrito()'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 6 seconds)
1 errors, 0 warnings
Run Code Online (Sandbox Code Playgroud)
我正在使用 CodeBlocks 进行编译。
我正在使用代码块
这是问题。
如果您开始学习 C++,那么(不幸的是)了解翻译单元是必不可少的。像 Code::Blocks 这样的 IDE 向你隐藏了这个细节——在这种情况下它做错了(虽然这并不是 Code::Blocks 的错,它不能在没有配置的情况下自动猜测在这种情况下要做什么)。
一开始,放下IDE,进入命令行进行编译。分别编译两个翻译单元并将它们显式链接在一起。
g++ -o burrito.o burrito.cpp
g++ -o main.o main.cpp
g++ -o main main.o burrito.o
Run Code Online (Sandbox Code Playgroud)
每本优秀的 C++ 初学者书籍都会解释它是如何工作的。
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |