2012-07-04 2 views
0

Это учебное пособие, за которым я слежу, и я сделал все, что он говорит, но он не работает. У меня есть три файла: 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.

+5

Как вы компилируете? Это проблема. –

+0

Есть кнопка, которая говорит «Build and Run». Я нажимаю на него, а на консоли он говорит «Компиляция ...». Это все, что я знаю. Я использую CodeBlocks. – 0x499602D2

+0

Возможный дубликат http://stackoverflow.com/questions/5971206/codeblocks-how-to-compile-multiple-file-projects –

ответ

4

I'm using CodeBlocks

В этом проблема.

Если вы начинаете изучать C++, то это (к сожалению) essential, чтобы узнать о translation units. IDE, например Code :: Blocks, скрывает эту деталь от вас - и делает это неправильно, в этом случае (на самом деле это не ошибка Code :: Blocks, но она не может автоматически угадать, что делать в этом случае без настройки).

В начале отпустите IDE, перейдите в командную строку для компиляции. Скомпилируйте две единицы перевода отдельно и соедините их вместе явно.

g++ -o burrito.o burrito.cpp 
g++ -o main.o main.cpp 
g++ -o main main.o burrito.o 

Каждый хороший справочник C++ для начинающих объяснит, как это работает.

+0

Как мне открыть командную строку? Это команда «подсказка»? – 0x499602D2

+0

@ Давид Да. Возможно, вы находитесь под Windows? К сожалению, командная строка под Windows отстой (она по существу застряла в последнем тысячелетии), но вы можете либо использовать PowerShell, либо 'cmd.exe', которые вы можете запустить в меню« Пуск ». –

+0

Не должно ли быть '-c' в первых двух командах' g ++ '? –

1

Когда вы связываете объекты вместе, чтобы получить конечный исполняемый файл, который вы забывание связать скомпилированный-объект из файла burrito.cpp правильно

Если вы строите с Makefile, ваше окончательное правило вывода должно иметь что-то вроде «-o main main.o burrito.o»

+0

Я использую CodeBlocks. Итак, как бы я это сделал? – 0x499602D2

+0

Вы уверены, что burrito.cpp принадлежит к тому же проекту, что и ваш основной файл? – Salepate

0

Использование блоков кода 13.12 Я щелкнул правой кнопкой мыши по файлу Burritto.cpp, выбрав «Свойства», затем перейдите на вкладку «Сборка» и проверили флажки файла компиляции и файла ссылок, затем нажмите «ОК», сохранили все, а затем побежали, и он отлично работал.

Смежные вопросы