С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/41: Рейтинг темы: голосов - 41, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 2

Как правильно подключить свой заголовочный файл?

20.04.2014, 14:13. Показов 7849. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два файла.

Основной файл - "2.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 <iostream>
#include <windows.h>
#include <string.h>
#include <map>
#include "notes.h"
 
using namespace std;
 
 
 
 
int main(){
      
 
map< string, float > notes;
initMap(notes);
 
       
       Beep(notes["F6d"],300);
 
return 0;       
}
и собственный заголовочный файл "notes.h":

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
29
30
31
32
33
34
#pragma once
#ifndef NOTES_H
#define NOTES_H
 
 
void initMap( map<string, float> &theMap )
{
theMap["C5"] = 261.63;
theMap["D5"] = 293.66;  
theMap["E5"] = 329.63;
theMap["F5"] = 349.23;
theMap["G5"] = 392.00;
theMap["A5"] = 440.00;    
theMap["H5"] = 493.88;
theMap["C6"] = 523.25;
theMap["D6"] = 587.32;  
theMap["E6"] = 659.26;
theMap["F6"] = 698.46;
theMap["G6"] = 784.00;
theMap["A6"] = 880.00;
theMap["H6"] = 987.75;
theMap["Ñ5d"] = 277.18;
theMap["D5d"] = 311.13;
theMap["F5d"] = 369.99;
theMap["G5d"] = 415.30;
theMap["A5d"] = 466.16;
theMap["C6d"] = 554.36;
theMap["D6d"] = 622.26;
theMap["F6d"] = 739.98;
theMap["G6d"] = 830.60;
theMap["A6d"] = 932.32;
}  
 
#endif NOTES_H
Вместе работает нормально, но, если выносить ф-ию в h-файл, то Dev-C++ выдает такую ошибку: "5 [путь к файлу '2.cpp'] In file included from [путь к файлу ''2.cpp']" Может, я неправильно оформляю заголовочный файл?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2014, 14:13
Ответы с готовыми решениями:

Как подключить свой заголовочный файл?
По книге Липпмана занимаюсь, нужно подключить заголовочный файл .h. Добавлял его как класс и как существующий элемент, но пишет одно и тоже...

Как подключить свой заголовочный файл в Borland 3.1
Друзья,у меня свой заголовочный файл с расширением .h ,который я буду вызывать в основном файле .cpp . Но при компиляции вызывает ошибку...

Как подключить заголовочный файл?
есть заголовочный файл в папке api пример api/file.h, как его подключить в visual studio 2013?:)

3
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.04.2014, 14:30
Ошибка непонятна. Внешне, вроде бы, всё правильно подключено, но не нужно помещать реализации в заголовочный файл. Там, по общим правилам, делают объявления (прототипы), а реализации помещают в .cpp.

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
#include <iostream>
#include <windows.h>
#include <string> // не string.h
#include <map>
#include "notes.h"
 
using namespace std;
C++
1
2
3
4
5
6
7
8
#pragma once
#ifndef NOTES_H
#define NOTES_H
#include <string>
#include <map>
 
void initMap( std::map <std::string, float>&theMap )
{
1
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 2
20.04.2014, 14:45  [ТС]
В общем-то проблема оказалась банальнейшей. Не проставил std. Спасибо за помощь.

Там, по общим правилам, делают объявления (прототипы), а реализации помещают в .cpp.
А это важно или просто стандарт, которого стараются придерживаться?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.04.2014, 19:40
Цитата Сообщение от serjDev Посмотреть сообщение
Не проставил std.
Не только: string.h вмеcто string - это разные заголовочные файлы; если не сделать в .h файле:
C++
1
2
#include <string>
#include <map>
, то компиляция будет зависеть от места подключения файла notes.h в файле 2.cpp (если поставить его выше, чем сделаны #include <string> и #include <map>, то компилироваться уже не будет), а этого не должно быть.
Цитата Сообщение от serjDev Посмотреть сообщение
А это важно или просто стандарт, которого стараются придерживаться?
Это важно. Если хедер с реализациями будет подключен к нескольким .cpp, то будет ошибка линкера: множественные определения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2014, 19:40
Помогаю со студенческими работами здесь

Как подключить заголовочный файл std_lib_facilities.h?
Всем привет! Во время чтения книги Бьярне Страуструпа &quot;Программирование. Принципы и практика использования C++&quot;(2011 г.) столкнулся с...

Как правильно организовать заголовочный файл со своими функциями?
Есть файл в котором я храню функции, которые часто использую(среди них есть и шаблонные). Например: //Utils.h template...

Куда подключить заголовочный файл.
Есть много файлов типа:1.h ... 100.h,1.cpp ... 100.cpp, а также один файл main.cpp. Во всех используются функции из &lt;cmath&gt;. Во...

Подключить заголовочный файл CMU Sphinx
Здравствуйте. Помогите пожалуйста, включил заголовочный файл pocketsphinx.h и все равно пишет &quot;не удалось открыть файл...

Ошибка: "CTriangle: No such file or directory". Как подключить заголовочный файл?
не удается открыть файл включение CTriangle:No such file or directory #include &quot;stdafx.h&quot; #include &quot;CTriangle.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru