Форум программистов, компьютерный форум CyberForum.ru

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

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

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

18.05.2013, 15:17. Просмотров 655. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 15:17     Реализация класса в отдельном файле
Посмотрите здесь:

C++ Как разместить 2 поиска в отдельном заголовочном файле
Опять про реализацию класса в отдельном файле C++
C++ Переменные в отдельном файле
C++ Объявление функции в отдельном файле (Code::Blocks)
C++ реализация класса в .h файле хорошо или плохо?
Реализация шаблонов класса в инлайн файле C++
C++ Реализация шаблонов класса в инлайн файле
C++ Реализовать определение нового класса в отдельном файле (библиотека пользователя)
Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++
C++ Функция в отдельном файле
LNK2019 при вызове метода в отдельном файле C++
Реализация класса на базе класса Stack с возможностью !индексирования! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Регистрация: 18.05.2013
Сообщений: 2
18.05.2013, 15:49  [ТС]     Реализация класса в отдельном файле #3
Находил в сети информацию, что IDE сами как-то разруливают зависимости между файлами, если они находятся в одном проекте. Хотелось бы узнать как это делать нативно
0x10
2454 / 1626 / 238
Регистрация: 24.11.2012
Сообщений: 4,001
18.05.2013, 15:52     Реализация класса в отдельном файле #4
Самое тупое, что можно предложить:
g++ -c -Wall *.cpp
g++ -o program *.o

А вообще почитайте про Makefile.
Yandex
Объявления
18.05.2013, 15:52     Реализация класса в отдельном файле
Ответ Создать тему
Опции темы

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