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

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

Войти
Регистрация
Восстановить пароль
 
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
#1

Директива #include - C++

10.11.2010, 13:55. Просмотров 797. Ответов 6
Метки нет (Все метки)

Всем привет. Пишу программу по книге Дейтел Х., Дейтел П - Как программировать на C++ FIG6_5.cpp, я компилирую проект FIG6_5.dev вместе с файлами FIG6_5.cpp и TIME1.cpp, выходят ошибки, помогите разобраться.

Заголовочный файл, который находится в папке с проектом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef TIME1_H
#define TIME1_H
 
class Time
{
      public:
             Time();
             void setTime(int, int, int);
             void printMilitary();
             void printStandard();
      
      private:
              int hour;
              int minute;
              int second;  
};
#endif
далее создаю файл TIME1.cpp

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
#include <iostream>
#include "TIME1.h"
 
Time::Time()
{
            hour = minute = second = 0; 
}
void Time::setTime(int h, int m, int s)
{
     hour = (h >= 0 && h < 24) ? h : 0;
     minute = (m >= 0 && m < 60) ? m : 0;
     second = (s >= 0 && s < 60) ? s : 0;     
}
 
void Time::printMilitary()
{
     cout << (hour < 10 ? "0" : "") << hour << ":"
          << (minute < 10 ? "0" : "") << minute << ":"
          << (second < 10 ? "0" : "") << second;
}
 
void Time::printStandard()
{
     cout << ((hour == 0 || hour == 12) ? 12 : hour % 12)
          << ":" << (minute < 10 ? "0" : "") << minute
          << ":" << (second < 10 ? "0" : "") << second
          << (hour < 12 ? " AM " : " PM");
}
далее создаю проект FIG6_5.dev и файл FIG6_5.cpp

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 <cstdlib>
#include <iostream>
#include "time1.h"
using namespace std;
 
int main(int argc, char *argv[])
{
    Time t;
    
    cout << "Nachalnoe znachenie voennogo vremeni ravno ";
    t.printMilitary();
    cout << "\n" << "Nachalnoe znachenie standartnogo vremeni ravno ";
    t.printStandard();
    
    t.setTime(13, 27, 6);
    cout << "\n\n" << "Voennoe vremia posle setTime ravno ";
    t.printMilitary();
    cout << "\n" << "Standartnoe vremia posle setTime ravno ";
    t.printStandard();
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
При компиляции выскакивают ошибки:

[Linker error] undefined reference to `Time :: Time()'
[Linker error] undefined reference to `Time :: printMilitary()'
[Linker error] undefined reference to `Time :: printStandard()'
[Linker error] undefined reference to `Time :: setTime(int, int, int)'
[Linker error] undefined reference to `Time :: printMilitary()'
[Linker error] undefined reference to `Time :: printStandard()'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
10.11.2010, 14:20     Директива #include #2
grrrrr, я в командной строке пытался скомпилировать, ругнулось на cout в time1.cpp поправил - скомпилировалось и что-то вывело...
time1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef TIME1_H
#define TIME1_H
 
class Time
{
      public:
             Time();
             void setTime(int, int, int);
             void printMilitary();
             void printStandard();
 
      private:
              int hour;
              int minute;
              int second;
};
 
#endif // TIME1_H

time1.cpp
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
#include <iostream>
#include "time1.h"
 
Time::Time()
{
            hour = minute = second = 0;
}
void Time::setTime(int h, int m, int s)
{
     hour = (h >= 0 && h < 24) ? h : 0;
     minute = (m >= 0 && m < 60) ? m : 0;
     second = (s >= 0 && s < 60) ? s : 0;
}
 
void Time::printMilitary()
{
    std::cout << (hour < 10 ? "0" : "") << hour << ":"
          << (minute < 10 ? "0" : "") << minute << ":"
          << (second < 10 ? "0" : "") << second;
}
 
void Time::printStandard()
{
    std::cout << ((hour == 0 || hour == 12) ? 12 : hour % 12)
          << ":" << (minute < 10 ? "0" : "") << minute
          << ":" << (second < 10 ? "0" : "") << second
          << (hour < 12 ? " AM " : " PM");
}

app.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
#include "time1.h"
 
int main(int argc, char *argv[])
{
    Time t;
 
    std::cout << "Nachalnoe znachenie voennogo vremeni ravno ";
    t.printMilitary();
    std::cout << "\n" << "Nachalnoe znachenie standartnogo vremeni ravno ";
    t.printStandard();
 
    t.setTime(13, 27, 6);
    std::cout << "\n\n" << "Voennoe vremia posle setTime ravno ";
    t.printMilitary();
    std::cout << "\n" << "Standartnoe vremia posle setTime ravno ";
    t.printStandard();
 
    // system("PAUSE");
    return EXIT_SUCCESS;
}

Директива #include
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
10.11.2010, 15:20  [ТС]     Директива #include #3
easybudda, поправил тоже cout, проблема осталась..
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
10.11.2010, 15:24     Директива #include #4
Цитата Сообщение от grrrrr Посмотреть сообщение
проблема осталась..
Значит не так как-то проект создаёте... По сути нужно создать один проект и в него по очереди все три файла добавлять. Вы среду разработки укажите - кто-нибудь точнее подскажет. В самом коде ошибок, видимо, нет - компилируется, выполняется...
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
10.11.2010, 15:30  [ТС]     Директива #include #5
Среда Dev C++ v.4.9.9.2, проблем вроде раньше не было, я сейчас в первый раз делаю заголовочные файлы в Dev C++. Помогите. Просто в книге по этой главе и далее идут проекты с заголовочными файлами.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,759
Записей в блоге: 26
10.11.2010, 16:24     Директива #include #6
Судя по всему, файл TIME1.cpp в компиляцию не попал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2010, 16:35     Директива #include
Еще ссылки по теме:

C++ Директива #ifdef _DEBUG
Директива #import C++
C++ Директива include
C++ Директива using
C++ Директива #ifndef

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

Или воспользуйтесь поиском по форуму:
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
10.11.2010, 16:35  [ТС]     Директива #include #7
Evg, скачаю wxDev-C++ наверное, потом проверю.
Yandex
Объявления
10.11.2010, 16:35     Директива #include
Ответ Создать тему
Опции темы

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