Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
taster
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 18
1

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

08.09.2013, 16:00. Просмотров 595. Ответов 9
Метки нет (Все метки)

Принято выносить код класса в отдельный заголовочный файл и потом подключать его в программе.
Вот мой код класса(файл 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 может также подключить этот заголовочный файл.
Возможен ли конфликт? И как избежать подобных ситуаций?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 16:00
Ответы с готовыми решениями:

Не подключается заголовочный файл
Как подключить библиотеку #include &quot;array.h&quot;,очень нужно.Заранее спасибо) вот...

Не подключается заголовочный файл
Вот ошибка. Место, где лежат файлы. Подключаю их.

Даден массив. Все четные елементы массива уменьшыть в два раза, а нечетные увеличить в два раза.
С++. Даден массив. Все четные елементы массива уменьшыть в два раза, а...

Файлы. Программа, которая определяет если такой момент, что два раза вошли по одному пропуску или два раза вышли по одному (выводит все время истину)
Всем привет. Смысл задания примерно следующий: Есть файл Input.txt. Содержание...

Заголовочный файл .h
Здравствуйте уважаемые гуру-программисты! Столкнулся с такой проблемой. Пишу в...

9
alsav22
5445 / 4840 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 16:01 2
Цитата Сообщение от taster Посмотреть сообщение
Возможен ли конфликт?
Нет.В библиотечных хедерах есть защита от множественных включений.
1
taster
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 18
08.09.2013, 16:17  [ТС] 3
alsav22, спасибо.
0
alsav22
5445 / 4840 / 831
Регистрация: 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
1
Убежденный
08.09.2013, 17:03
  #5

Не по теме:


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

0
taster
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 18
08.09.2013, 17:07  [ТС] 6
alsav22, спасибо, учту.

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

Не по теме:

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

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

Заголовочный файл
Доброго времени суток! Ситуация такая: хочу, исходя из функции, создать...

Заголовочный файл.
Доброго времени суток. Вопрос возник, по скольку в лекции по программированию...

Заголовочный файл
Опишите подробно, пожалуйста , как создается заголовочный файл в среде 2010 ....


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

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

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