2012-04-30 3 views
2

Я действительно новичок в C++, и я пытаюсь создать класс в отдельном файле, и у меня возникла проблема. Я в основном копировал учебник http://thenewboston.org/watch.php?cat=16&number=15 из словаря newboston. Тем не менее, потому что все не работает. Я получаю эту ошибку, когда пытаюсь запустить основной файл:Создание класса в отдельном файле (новичок)

C:\Users\Akavall\Desktop\C++ Stuff\New C++ stuff\class_try.o:class_try.cpp|| undefined reference to `Burrito::Burrito()'| 
||=== Build finished: 1 errors, 0 warnings ===| 

Также, когда я создаю класс. Пиктограмма Workspace сидит сама по себе, в то время как она (я считаю) включает мои .cpp и .h папки только что созданного класса.

Я предполагаю, что мои пути некорректно установлены где-то, но я понятия не имею, как это исправить. Какие-либо предложения?

Вот код, который я использую:

Главный файл (class_try.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 "Burrito.h" 
#include <iostream> 

using namespace std; 

Burrito::Burrito() 
{ 
    cout<<"something silly"<<endl; 
} 

Что мне делать, чтобы исправить эту проблему?

Спасибо заранее

Edit:

Я использую CodeBlocks, и я на 32-битных Windows.

+0

, что компилятор вы используете? – juanchopanza

+2

Похоже, Burrito.o не связано. Возможно, Burrito.cpp даже не компилируется, вы пытались добавить его в проект? – Fanael

ответ

2

Если вы используете MSVC, как связанный с ним учебник, вам нужно сначала создать проект. После создания проекта добавьте все файлы заголовка (.h) и источника (.cpp/.cxx), которые вы хотите включить/скомпилировать в него. Теперь MSVC делает это легко с этого момента; вы можете просто скомпилировать (пока все будет правильно добавлено в ваш проект), и он скомпилирует все для вас.

Дополнительная информация Приведенная ниже информация непосредственно не имеет отношения к этому вопросу (или, по крайней мере, не кажется, что путь, так как вы на Windows), но предназначен, чтобы помочь вашему росту, как разработчик, если вы хотите Это.

Если вы решили использовать компилятор командной строки (то есть MingW) или работать в среде * nix, важно отметить, что вам нужно явно скомпилировать каждый объект (без ссылки; в gcc/mingw этот флаг равен -c). Затем в конце компиляции нескольких несвязанных объектов вы скомпилируете все объекты и основной исходный файл вместе (со ссылкой на этот раз), и он создаст один исполняемый файл.

Я бы порекомендовал, прежде чем пытаться использовать компилятор командной строки, с которым вы легко знакомы с этим процессом через IDE. Так как это вообще автоматизированный процесс в любом случае (то есть большинство разработчиков в конечном итоге пишут Makefile для такого рода вещей, реалистично), вы действительно не теряете слишком много (сразу же, так или иначе), не делая этого. Это как раз то, что нужно знать, когда вы учитесь.

+0

Спасибо большое! Я понял, все работает сейчас, и спасибо за дополнительную информацию. – Akavall

1

Используя компилятор командной строки, вы можете попробовать это:

g++ class_try.cpp Burrito.cpp -o executable_name 

Это будет связать два .cpp файлы и создать исполняемый файл, и вы можете запустить этот исполняемый файл, просто набрав

./executable_name 
+0

Я считаю, что у вас отсутствует '-o'. Я бы сделал 'g ++ class_try.cpp Burrito.cpp -o executable_name' или' g ++ -std = C++ 11 class_try.cpp Burrito.cpp -o executable_name' – Akavall

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