簡體   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