使用对象和类的初学者遇到以下错误
Beginner working with objects and classes getting the following errors
这是我一直在遵循的教程,我已经完成了它所说的一切,但它不起作用。我有三个文件:main.cpp,burrito.h(类)和burrito.cpp。
这里分别是三个文件。
主.cpp
#include <iostream>
#include "Burrito.h"
using namespace std;
int main() {
Burrito bo;
return 0;
}
墨西哥卷饼
#ifndef BURRITO_H
#define BURRITO_H
class Burrito {
public:
Burrito();
};
#endif // BURRITO_H
墨西哥卷饼.cpp
#include <iostream>
#include "Burrito.h"
using namespace std;
Burrito::Burrito() {
cout << "Hello World" << endl;
}
当我构建并运行时,出现以下错误:
...undefined reference to `Burrito::Burrito()'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 6 seconds)
1 errors, 0 warnings
我正在使用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
每本好的初学者C++书都会解释它是如何工作的。
当您将对象链接在一起以获取最终的可执行文件时,您忘记了正确链接来自墨西哥卷饼.cpp文件的编译对象
如果你使用 Makefile 进行构建,你的最终输出规则应该有类似"-o main main.o burrito.o"的内容。
使用代码块 13.12 我右键单击 Burritto.cpp文件选择属性,然后选择构建选项卡并选中编译文件和链接文件复选框,然后单击确定保存所有内容然后运行并且效果很好。
相关文章:
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- 我在 ndk 中构建文件时遇到错误 android.mk
- 我们在批处理模式下使用 G++ 时遇到错误
- 在visual Studio中构建代码时,我遇到错误,.h文件丢失
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- 可中断线程类 C++11 - 遇到错误?
- 在尝试在同一类内部进行课程矢量时,我会遇到错误
- 使用向量和结构在C 中遇到错误
- 我正在尝试安装游戏引擎,但遇到错误
- 使用 bazel 从源代码构建张量流服务遇到错误:C++规则'@org_tensorflow//…'编译失败(出口 4)
- 为什么尝试这样的类代码时会遇到错误?我初学者对不起
- 当 Mingw 为 C++ 编译 OpenCV 时,我遇到错误?
- 遇到错误试图在功能型参数中使用void函数的错误
- 尝试使用Boost和Ncurses库进行编译程序时会遇到错误
- 我在使用C 的Hangman游戏中遇到错误
- 为什么我在加载共享库时遇到错误
- 我在 c++ 中遇到错误'PTHREAD_START_ROUTINE'未在此范围内声明
- 学习如何在遇到错误'variable not declared in scope'的 c++ 中使用指针
- 如果遇到错误,如何重复代码
- 当我尝试将UDP套接字绑定到带有SFML的端口时,为什么会遇到错误