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

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

Войти
Регистрация
Восстановить пароль
 
taster
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 18
#1

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

08.09.2013, 16:00. Просмотров 467. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два раза подключается заголовочный файл (C++):

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

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

Даден массив. Все четные елементы массива уменьшыть в два раза, а нечетные увеличить в два раза. - C++
С++. Даден массив. Все четные елементы массива уменьшыть в два раза, а нечетные увеличить в два раза. Сложновато :sorry:

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

подскажите что с кодом не так? (просуммировать два раза по два столбца, функция) - C++
Нужно создать функцию для суммирования двух столбцов и просуммировать два раза по два столбца. Сам массив задала, а функция работает не...

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

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

Не по теме:


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

0
taster
0 / 0 / 0
Регистрация: 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
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 17:25 #8
Герб Саттер. Решение сложных задач на C++.
0
Миниатюры
Два раза подключается заголовочный файл   Два раза подключается заголовочный файл  
Убежденный
Системный программист
Эксперт С++
15545 / 7053 / 1114
Регистрация: 02.05.2013
Сообщений: 11,466
Завершенные тесты: 1
08.09.2013, 17:27 #9
Цитата Сообщение от taster Посмотреть сообщение
А какие могут быть проблемы? Конфликт имен?
Все тот же Герб Саттер:
http://gotw.ca/publications/migrating_to_namespaces.htm
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2013, 17:36 #10
...
0
Миниатюры
Два раза подключается заголовочный файл   Два раза подключается заголовочный файл  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 17:36
Привет! Вот еще темы с ответами:

Заголовочный файл - C++
Исходный файл main.cpp #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #include &quot;studio.h&quot; using namespace std; ...

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

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

Заголовочный файл - C++
Для чево етот файл используется??? Как ево использовать в своей программе помогите хочу разобраться)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.09.2013, 17:36
Ответ Создать тему
Опции темы

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