Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 11:51   #1
Archivampire
 
Аватар для Archivampire
 
Регистрация: 09.05.2009
Сообщений: 8
По умолчанию Как запустить или скомпоновать?

Такая проблема. Купил самоучитель по С++. Дошёл до темы "Классы", до параграфа "Отделение реализации от интерфейса класса в файле". То есть там, где мы сохраняем наш интерфейс класса в файле с расширением .h(в этом файле протитипы функций), а реализацию в файле с расширением .cpp(тут подробное описание функций). А главная функция main находится в третьем файле(тоже .cpp).

Так вот я все переписал как в книге, даже скачивал с официального сайта исходники, и все равно компилятор выдает ошибки:
[Linker error] undefined reference to `GradeBookX::GradeBookX(std::string )'
[Linker error] undefined reference to `GradeBookX::GradeBookX(std::string )'
[Linker error] undefined reference to `GradeBookX:: displayMessage()'
[Linker error] undefined reference to `GradeBookX:: displayMessage()'
ld returned 1 exit status

Вот мои программы:
//GradeBookX.h интерфейс
#include <iostream>
#include <string>
using namespace std;

class GradeBookX
{
public:
GradeBookX(string name);
void SetCourseName(string name);
string GetCourseName();
void displayMessage();
private:
string CourseName;
};

//GradeBookX.cpp реализация
#include <iostream>
#include <string>
using namespace std;
#include <GradeBookX.h>
GradeBookX::GradeBookX(string name)
{
SetCourseName(name);
}
void GradeBookX::SetCourseName(string name)
{
if (name.length()<10)
CourseName=name;
else {
cout<<"Error!\n";
CourseName=name.substr(0,10);
}
}
string GradeBookX::GetCourseName()
{
return CourseName;
}

void GradeBookX:: displayMessage()
{
cout<<"Welcome to the grade book for "
<<GetCourseName()<<endl;
}

//GradeBookConstructor.cpp главный файл
#include <iostream>
#include <string>
using namespace std;

#include <GradeBookX.h>
int main()
{
string NameOfCourse,Course;
cout<<"Enter 1st course name: \n";
getline(cin,NameOfCourse);
cout<<"Enter 2nd course name: \n";
getline(cin,Course);
GradeBookX MyGradeBook(NameOfCourse),MyGB(Cour se);
cout<<"1st grade book's course name: \n";
MyGradeBook.displayMessage();
cout<<"2nd grade book's course name: \n";
MyGB.displayMessage();


system("Pause");
return 0;

}

НЕ пойму в чем дело, в книге ещё написано что мол это все надо ещё скомпоновать, но как это сделать??? Подскажите плиз

P.S.
У меня компилятор DEV C++(gcc вроде)
Archivampire вне форума Ответить с цитированием
Старый 07.03.2010, 12:09   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Попробуйте
Код:
//GradeBookX.h интерфейс
#ifndef GRADEBOOKX_H
#define GRADEBOOKX_H
#include <iostream>
#include <string>
using namespace std;

class GradeBookX
{
public:
GradeBookX(string name);
void SetCourseName(string name);
string GetCourseName();
void displayMessage();
private:
string CourseName;
};
#endif
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.03.2010, 12:32   #3
Archivampire
 
Аватар для Archivampire
 
Регистрация: 09.05.2009
Сообщений: 8
По умолчанию

Неа, не пашет
Та же ошибка
Мб если менять, так менять все три проги а не одну??
Archivampire вне форума Ответить с цитированием
Старый 07.03.2010, 12:37   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

компилировать надо все cpp файлы вместе, devc++ по умолчанию это не сделает, там либо через проект надо, либо через встроенный G++ компилировать

Код:
g++ GradeBookConstructor.cpp GradeBookX.cpp
NiCola999 вне форума Ответить с цитированием
Старый 07.03.2010, 12:46   #5
Archivampire
 
Аватар для Archivampire
 
Регистрация: 09.05.2009
Сообщений: 8
По умолчанию

NiCola999, огромная просьба, расскажите как это делать? плиз поподробней, так как я только недавно начал изучать С++
Archivampire вне форума Ответить с цитированием
Старый 07.03.2010, 12:52   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В любом случае, стражи включения будут нелишними...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.03.2010, 13:03   #7
Archivampire
 
Аватар для Archivampire
 
Регистрация: 09.05.2009
Сообщений: 8
По умолчанию

Хорошо, так как компилировать все вместе через проект или через встроенный g++?
Archivampire вне форума Ответить с цитированием
Старый 07.03.2010, 13:45   #8
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

я это делаю через встроенный g++, если у тебя винда, зайди в св-ва компьютера, вкладка дополнительно, кнопка "переменные среды", там найди переменную Path, нажми изменить, допиши в конце там путь к папке bin папки где у тебя стоит devcpp , то есть например если девс++ лежит тут
c:/devcpp , то в Path надо дописать с:/devcpp/bin , сохранить, перезапустить консоль, и тогда просто пишешь
Код:
g++ GradeBookConstructor.cpp GradeBookX.cpp
NiCola999 вне форума Ответить с цитированием
Старый 07.03.2010, 14:53   #9
Archivampire
 
Аватар для Archivampire
 
Регистрация: 09.05.2009
Сообщений: 8
По умолчанию

Вот что пишет, если я правильно понял:

Эту строку g++ GradeBookConstructor.cpp GradeBookX.cpp надо в компиляторе писать? и ничего больше?
Archivampire вне форума Ответить с цитированием
Старый 07.03.2010, 15:05   #10
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

нет....это для командной строки
Пуск->Выполнить
cmd
cd путь к файлам cpp
g++ ....
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить приложение делфи в фоновом режиме(как процесс)? Diakon Общие вопросы Delphi 4 16.11.2009 13:06
Help!!! как это скомпоновать в один проект??? Redeemer_09 Общие вопросы C/C++ 5 04.09.2009 22:29
Как скомпоновать? Greynvi4 Общие вопросы C/C++ 39 03.08.2009 22:45
Скомпоновать выпадающий список valerij Microsoft Office Excel 7 24.02.2009 01:54
Как запустить программу Vadik(R) Паскаль, Turbo Pascal, PascalABC.NET 1 10.03.2008 16:04