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

Два раза подключается заголовочный файл - C++

Восстановить пароль Регистрация
 
taster
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 18
08.09.2013, 16:00     Два раза подключается заголовочный файл #1
Принято выносить код класса в отдельный заголовочный файл и потом подключать его в программе.
Вот мой код класса(файл Book.h):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
using std::string;
 
class Book {
public:
    // constructor
    Book(string titleBook) {
        setTitle(titleBook);
    }
 
    void setTitle(string titleBook) {
        title = titleBook;
    }
 
    string getTitle() {
        return title;
    }
private:
    string title;
};
Вот код программы, которая использует этот класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using std::cout;
using std::endl;
 
#include <windows.h>
 
#include "Book.h"
 
int main() {
    Book book1("Title for book one");
    Book book2("Title for book two");
 
    cout << "Book 1: " << book1.getTitle() << endl;
    cout << "Book 2: " << book2.getTitle() << endl; 
 
    system("PAUSE");
    return 0;
}
Все отлично работает, но у меня есть один вопрос...
В файле Book.h подключается заголовочный файл string:
C++
1
#include <string>
Но по идеи, человек использующий мой класс Book может также подключить этот заголовочный файл.
Возможен ли конфликт? И как избежать подобных ситуаций?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 16:00     Два раза подключается заголовочный файл
Посмотрите здесь:

Даден массив. Все четные елементы массива уменьшыть в два раза, а нечетные увеличить в два раза. C++
Заголовочный файл .h C++
подскажите что с кодом не так? (просуммировать два раза по два столбца, функция) C++
Файлы. Программа, которая определяет если такой момент, что два раза вошли по одному пропуску или два раза вышли по одному (выводит все время истину) C++
C++ Заголовочный файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 16:01     Два раза подключается заголовочный файл #2
Цитата Сообщение от taster Посмотреть сообщение
Возможен ли конфликт?
Нет.В библиотечных хедерах есть защита от множественных включений.
taster
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 18
08.09.2013, 16:17  [ТС]     Два раза подключается заголовочный файл #3
alsav22, спасибо.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 17:02     Два раза подключается заголовочный файл #4
В своих зоголовочных файлах тоже рекомендуется всегда такую защиту делать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef BOOK_H
#define BOOK_H
#include <string>
using std::string;
 
class Book {
public:
    // constructor
    Book(string titleBook) {
        setTitle(titleBook);
    }
 
    void setTitle(string titleBook) {
        title = titleBook;
    }
 
    string getTitle() {
        return title;
    }
private:
    string title;
};
#endif // BOOK_H
Убежденный
08.09.2013, 17:03
  #5

Не по теме:


Цитата Сообщение от taster Посмотреть сообщение
using std::string;
Никогда так не пишите в заголовочных файлах.
Когда начнутся проблемы, придется кучу всего исправлять.

taster
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 18
08.09.2013, 17:07  [ТС]     Два раза подключается заголовочный файл #6
alsav22, спасибо, учту.

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Когда начнутся проблемы, придется кучу всего исправлять.
А какие могут быть проблемы? Конфликт имен?

-=ЮрА=-
Заблокирован
Автор FAQ
08.09.2013, 17:09     Два раза подключается заголовочный файл #7
taster,
Цитата Сообщение от taster Посмотреть сообщение
#include <iostream>
using std::cout;
using std::endl;
using namespace std и std:: надоело смотреть!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 17:25     Два раза подключается заголовочный файл #8
Герб Саттер. Решение сложных задач на C++.
Миниатюры
Два раза подключается заголовочный файл   Два раза подключается заголовочный файл  
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
08.09.2013, 17:27     Два раза подключается заголовочный файл #9
Цитата Сообщение от taster Посмотреть сообщение
А какие могут быть проблемы? Конфликт имен?
Все тот же Герб Саттер:
http://gotw.ca/publications/migrating_to_namespaces.htm
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 17:36     Два раза подключается заголовочный файл
Еще ссылки по теме:

C++ Заголовочный файл
Заголовочный файл C++
C++ Заголовочный файл

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 17:36     Два раза подключается заголовочный файл #10
...
Миниатюры
Два раза подключается заголовочный файл   Два раза подключается заголовочный файл  
Yandex
Объявления
08.09.2013, 17:36     Два раза подключается заголовочный файл
Ответ Создать тему
Опции темы

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