繁体   English   中英

初学者使用对象和类会遇到以下错误

[英]Beginner working with objects and classes getting the following errors

这是我一直在关注的教程,我已经完成了所讲的一切,但没有用。 我有三个文件:main.cpp,burrito.h(类)和burrito.cpp。

这分别是三个文件。

main.cpp中

#include <iostream>
#include "Burrito.h"
using namespace std;

int main() {

    Burrito bo;

    return 0;
}

Burrito.h

#ifndef BURRITO_H
#define BURRITO_H


class Burrito {
    public:
        Burrito();
};

#endif // BURRITO_H

Burrito.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进行编译。

我正在使用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 ++书籍都将解释其工作原理。

当您将对象链接在一起以获取最终的可执行文件时,您忘记了正确地链接burrito.cpp文件中的已编译对象

如果使用Makefile进行构建,则最终输出规则应类似于“ -o main main.o burrito.o”

使用代码块13.12我右键单击Burritto.cpp文件,选择“属性”,然后选择“构建”选项卡,并选中“编译文件”和“链接文件”复选框,然后单击“确定”,保存所有内容,然后运行,效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM