Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056

Ошибка компиляции нескольких файлов

16.08.2012, 15:39. Показов 1581. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Изучаю книгу Харви С++ в теме отделение "интерфейса от реализации" возникла проблема с компиляцией файлов GradeBook.cpp и fig03_13.cpp.
В книге есть такая фраза: "... Перед исполнением этой программы оба файла исходного кода на рисунке 3.12 и 3.13 должны быть компилированы, а затем скомпонованы друг с другом, т.е. вызовы элемент-функций в коде клиента должны быть привязаны к реализации элемент-функций класса - эта работа выполняется компоновщиком... Чтобы скрыть детали реализации элемент-функций GradeBook, программист класса предоставит программисту кода клиента только заголовочный файл GradeBook.h (который специфирует элемент класса и его элемент-данных) и объектный код класса GradeBook, который содержит интрукцию машинного языка, предоставляющие элемент-функции GradeBook. Программисту кода клиента не передаётсяс файл исходного кода GradeBook, так что клиент остаётся в невединии относительного того, как реализованы элемент-функции класса." Компилятор GNU G++. Все файлы находятся в одном каталоге. Пробовал следующие комманды: g++ GradeBook.cpp fig03_13.cpp; g++ GradeBook.cpp; g++ fig03_13; g++ fig03_13.cpp -o main; g++ fig03_13.cpp GradeBook.cpp -o rezult; g++ -c -o "GradeBook.o" GradeBook.cpp
Компилятор выдаёт приблизительно следующие ошибки:
fig03_13.cpp.text+0x45): undefined reference to `GradeBook::GradeBook(std::basic_string< char, std::char_traits<char>, std::allocator<char> >)'
fig03_13.cpp.text+0x92): undefined reference to `GradeBook::GradeBook(std::basic_string< char, std::char_traits<char>, std::allocator<char> >)'
fig03_13.cpp.text+0xba): undefined reference to `GradeBook::getCourseName()'
fig03_13.cpp.text+0xcf): undefined reference to `GradeBook::getCourseName()'
collect2: ld returned 1 exit status

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Рис. 3.11: GradeBook.h
// Определение класса GradeBook. Файл предоставляет собой открытый
// интерфейс GradeBook, не расскрывая реализации элемент-функций
// класса, который определяются в GradeBook.cpp
#include <string> // класс GradeBook использует стандартные строки
using std::string;
 
// Определение класса GradeBook
class GradeBook
{
 public:
  GradeBook(string); // конструктор, инициализирующий courseName
  void setCourseName(string); // устанавливает courseName
  string getCourseName(); // получает название курса
  void displayMessage(); // выводит сообщение-приветствие
 private:
  string courseName; // название курса для данного GradeBook
}; // конец класса GradeBook
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Рис. 3.12: GradeBook.cpp
// Определение элемент-функции GradeBook. Файл содержит
// реализацию функции, прототипы котрых объявлены в GradeBook.h.
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h" // Включение определение класса GradeBook
 
// конструктор инициализирует courseName пререданной строкой
GradeBook::Gradebook(string name)
{
  setCourseName(name); // инициализировать вызовом set-функции
} // конец конструктора GradeBook
 
// Функция для установки названия курса
void GradeBook::setCourseName(string name)
{
  courseName = name; // сохранить название курса в объекте
} // конец функции setCourseName
 
// функция для получения названия курса
string GradeBook::setCourseName()
{
  return courseName; // возвратить courseName объекта
} // конец функции getCourseName
 
// вывести сообщение-приветствие пользователю GradeBook
void GradeBook::displayMessage()
{
  // вызвать getCourseName для получения courseName
  cout << "Welcome to the grade book for\n" << getCourseName();
  << "!" << endl;
} // конец функции displayMessage
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Рис. 3.13: fig03_13.cpp
// Демонстрация класса GradeBook после отделения
// его интерфейса от реализации.
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h" // Включить определение класса GradeBook2
 
// Функция main() начинает исполнение программы
int main()
{
  // создать два объекта GradeBook
  GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
  GradeBook gradeBook2( "CS102 Data Structures in C++" );
 
  // вывести исходное значение courseName для каждого GradeBook
  cout << "gradeBook1 created for: " << gradeBook1.getCourseName()
       << "\ngradeBook2 created for: " << gradeBook2.getCourseName()
       << endl;
  return 0; // показывает успешное завершение
} // конец main()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.08.2012, 15:39
Ответы с готовыми решениями:

Шаблоны функций при компиляции нескольких файлов
Добрый день, форумчане! Ситуация следующая: есть проект на VS2015. В сторонней от него папке лежит два файла queue.h и queue.cpp. ...

При компиляции проекта из нескольких файлов Visual Studio выдает множество ошибок
Здравствуйте! Долго маюсь с данной проблемой, искал на форуме и поисковых системах, но ответа не нашёл. При компиляции достаточно...

Ошибка открытия нескольких файлов из БД
И так. В БД есть файлы. Их можно открыть, изменить и файл перезаписывается в БД. Все работает, но когда открываешь 2 файла, то...

2
0 / 0 / 0
Регистрация: 18.08.2012
Сообщений: 4
18.08.2012, 05:05
Правильная команда «g++ GradeBook.cpp fig03_13.cpp», просто у вас ошибки в файле «GradeBook.cpp» в строке 11 присмотритесь внимательно (С++ регистра зависим)
и в строке 23 сравните ее с 17, в 33 тоже будут проблемы после завершения 32 ;.
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
19.08.2012, 16:07  [ТС]
Спасибо всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.08.2012, 16:07
Помогаю со студенческими работами здесь

Ошибка загрузки нескольких файлов
Здравствуйте! Когда делаю загрузку на сервер один файл ссылка на бд выводит правильно. А если делаю несколько файлов ссылки на бд не...

Проект из нескольких файлов ( ошибка с <windows.h> )
Помогите разобраться с проектом из нескольких файлов. На паре написал вот такую програмку main.c #include &lt;stdio.h&gt; ...

Ошибка при сборке программы из нескольких файлов
А точнее, компилятор возвращает такую ошибку: ОС: Mac OS X 10.9.5 IDE: Xcode 6.2 Изначально просто пытался подключить...

Ошибка при компиляции: два имени выходных файлов разрешаются в один и тот же путь
Здравствуйте, при компиляции возникала такая ошибка, что это значит?

При создании нескольких word-файлов вылетает ошибка-сервер RPC недоступен!?
В программе создаю последовательно сначала один документ и вывожу его в формате ворд, далее пытаюсь создать второй, но выходит ошибка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru