Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
БелыйКлык
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 2
#1

Реализация класса в отдельном файле - C++

18.05.2013, 15:17. Просмотров 831. Ответов 3
Метки нет (Все метки)

Изучаю C++ (вернее только начал) по учебнику "Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++" и застрял на создании классов в отдельном файле с разбиением на интерфейс и реализацию.

Есть 3 файла:
Заголовочный класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
using std::string;
 
class GradeBook
{
    public:
        GradeBook(string);
        void setCourseName(string);
        string getCourseName();
        void displayMessage();
 
    private:
        string courseName;
 
 
};
Реализация класса:
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
#include <iostream>
using std::cout;
using std::endl;
 
#include "GradeBook.h"
 
GradeBook::GradeBook (string name)
{
    setCourseName(name);
}
 
void GradeBook::setCourseName (string name)
{
    courseName=name;
}
 
string GradeBook::getCourseName()
{
    return courseName;
}
 
void GradeBook::displayMessage()
{
    cout << "Добро пожаловать\n Курс: " << getCourseName() << endl;
}
И сама программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
#include "GradeBook.h"
 
int main()
{
    GradeBook mygr("azzzzz");
    string nameOfCourse;
 
    cout << "Текущий курс: " << mygr.getCourseName() << endl;
    
    cout << "Введите курс: ";
    getline(cin, nameOfCourse);
    cout << endl;
    mygr.setCourseName(nameOfCourse);
 
    mygr.displayMessage();
 
    return 0;
}
При сборке линковщик выдаёт ошибки:
main.cpp|10| undefined reference to `GradeBook::GradeBook(std::string)'
main.cpp|13| undefined reference to `GradeBook::getCourseName()'
main.cpp|18| undefined reference to `GradeBook::setCourseName(std::string)'
main.cpp|20| undefined reference to `GradeBook::displayMessage()'

В учебнике по этому поводу ничего не написано, разобраться с ошибкой самостоятельно пока не могу, хотя догадываюсь в чём проблема (насколько я понял основная программа просто "не знает" где находится реализация данного класса).
Хотелось бы узнать чем вызвана данная проблема и как её можно решить.

ОС: Linux (Archlinux)
Компилятор: g++
IDE не использую, вместо этого пишу в vim с плагином c.vim
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 15:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация класса в отдельном файле (C++):

Опять про реализацию класса в отдельном файле - C++
Допустимо ли следующее? есть проект в Visual Studio 2010. в нем следующие файлы: main.cpp - собссно программа MyClass.h -...

Реализовать определение нового класса в отдельном файле (библиотека пользователя) - C++
1. Реализовать определение нового класса в отдельном файле (библиотека пользователя). 2. Обязательно должны быть реализованы следующие...

Описание функции шаблонного класса библиотеки в отдельном cpp-файле - C++
Есть библиотека. В файле ARRAYLIST.HPP описан шаблон template &lt;typename _Type&gt; class ArrayList { private: int length; ...

Реализация шаблонов класса в инлайн файле - C++
Пытался написать шаблонны MyClass.h #pragma once #define MYCLASS template &lt;typename T&gt; class MyClass { public:

Реализация шаблонов класса в инлайн файле - C++
Пытался написать шаблонный класс, реализуя как обычно объявление класса в h файле и определение элемент-функций в с++. Компилятор постоянно...

реализация класса в .h файле хорошо или плохо? - C++
все знакомые мне ide разделяют класс на два файла: .h с описанием и .cpp с кодом, но, например, в boost .hpp файлы почти всегда содержат и...

3
Pakisan
14 / 14 / 1
Регистрация: 04.01.2013
Сообщений: 61
18.05.2013, 15:38 #2
Собрал твой проект, проблем не возникло(Ubuntu 12.10, Eclipse)
Собрал в след. виде GradeBook.h -> GradeBook.cpp -> Main.cpp
0
БелыйКлык
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 2
18.05.2013, 15:49  [ТС] #3
Находил в сети информацию, что IDE сами как-то разруливают зависимости между файлами, если они находятся в одном проекте. Хотелось бы узнать как это делать нативно
0
0x10
2480 / 1655 / 248
Регистрация: 24.11.2012
Сообщений: 4,100
18.05.2013, 15:52 #4
Самое тупое, что можно предложить:
g++ -c -Wall *.cpp
g++ -o program *.o

А вообще почитайте про Makefile.
0
18.05.2013, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 15:52
Привет! Вот еще темы с ответами:

Функция в отдельном файле - C++
Всем привет! Учусь писать код в разных файлах, возникла проблема с подобным кодом: main.cpp #include &lt;iostream&gt; #include...

Переменные в отдельном файле - C++
Есть вот такая программка из нескольких файлов. Компилируется без ошибок. А сам вопрос в комментарии. file01.h #ifndef FILE01_H_ ...

Как разместить 2 поиска в отдельном заголовочном файле - C++
Как разместить 2 поиска в отдельном заголовочном файле?? Создать файл содержащий сведения о результатах охоты. Данные должны быть...

Как правильно записать функцию в отдельном файле? - C++
Здравия желаю. Помогите, пожалуйста, разобраться, как записать собственную функцию в отдельном файле? Делаю так, не получается: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru