|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||||||||||
Зачем нужен h-файл? Почему нельзя все хранить в cpp?05.08.2014, 14:11. Показов 18959. Ответов 12
Метки нет (Все метки)
Помогите новичку! С с++ работаю впервые. Перешел с явы, делфи, рнр. Не понимаю что такое h-файл и чем он отличается от cpp и почему нельзя все хранить в одном файле... Нужно "сломать сознание" под логику другого языка...
Обьясните пожалуста: Есть main.cpp, в котором определил класс:
Что должно быть в myclass.h, что в myclass.cpp? Как его подключить в main.cpp? Кроме названия файла myclass.h и myclass.cpp чем-то связаны? ... вроде делал по инструкциям, вынес описание класса в h, а string wStr3::As_string() { в cpp, но компилятор выдал: undefined reference to `wStr::As_string()'
0
|
|||||||||||
| 05.08.2014, 14:11 | |
|
Ответы с готовыми решениями:
12
Почему в коллекциях типа Set нельзя хранить null Зачем вообще нужен рабочий стол, если в нем нельзя создавать даже папки и ярлыки Почему нельзя импортировать сразу все? |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||
| 05.08.2014, 14:14 | |||||
|
0
|
|||||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|||||||||||
| 05.08.2014, 14:15 | |||||||||||
1
|
|||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 05.08.2014, 14:15 | ||
|
1
|
||
|
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
|
|
| 05.08.2014, 14:21 | |
|
Tester64, ты в принципе можешь все в цпп файле писать, не знаю на счет скорости, но явно лучше, когда у тебя все структурировано, ибо когда ты пишешь большую нормальную прогу, что-то найти в коде тебе будет сложнее, это патерн какой-то не помню какой
1
|
|
|
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
|
||||||||||||||||
| 05.08.2014, 14:37 | ||||||||||||||||
|
Tester64, *.h - это заголовочный файл, обычно в них хранятся классы, методы и так далее, без реализации, а реализация происходит в *.cpp файлах, вот к примеру есть класс MyClass
MyClass.h
0
|
||||||||||||||||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||
| 05.08.2014, 15:15 [ТС] | |||
|
Теперь другая проблема... что такое string(без приписок)? какой include за это отвечает? и где его прописывать и сколько раз? И в H и в CPP и в main? Сработало лишь когда "упростил" задачу - заменил строку на int. Раньше в main работало, но там слишком много инклюдов... Пишет: ...wstr.h:13:2: error: 'string' does not name a type string As_string(); // ^ ...wstr.cpp:10:1: error: 'string' does not name a type string wStr::As_string() { ^ Добавлено через 2 минуты ... блин, этот с++ это сплошные тонкости... хуже китайского! ![]() чем отличается mc->Print(); от mc.Print(); у меня вроде и точка сработала. Но поставил ее по привычке после явы...
0
|
|||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||
| 05.08.2014, 15:19 | ||
но вообще лично мне не нравится вся эта история с заголовочными файлами, в том же делфи удобно то что там все в .pas файлах
0
|
||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||
| 05.08.2014, 15:30 [ТС] | ||
Не хочу изобретать свой язык ради небольших утилит на С++
0
|
||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 05.08.2014, 15:32 | ||
|
А теперь подключи этот .h с определением в паре .cpp файлов и собери свою программу - фейл.
1
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 05.08.2014, 15:40 | |
|
Tester64, ну и не изобретайте.
Аналогия для понимания: .h-файл это содержание книжки. Пара листов, где описаны какие главы есть вообще и на каких они страницах. Если вы хотите почитать что именно в этих главах, то открывайте .cpp-файл и ищите. Если вы хотите рассказать другому человеку о чем эта книжка, то вы можете просто показать ему содержание, а не полностью пересказывать всю книгу.
0
|
|
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||
| 05.08.2014, 15:48 [ТС] | ||
|
ПОЛУЧИЛОСЬ!
![]() надо было перед заменить строки на std::string странно что в main это не обязательно... Добавлено через 5 минут Где его мне надо инклюдить? только в заголовке (ведь все равно заголовок инклюдится в "тело" с реализацией методов) или и в cpp-файле тоже? ... пока до литературы рано (это на долго) - должен получить хоть что-нибудь что-бы остаться в языке... все "методом тыка"... пока воткнул везде, где поместилось - лишь бы заработало, но логики не понимаю...
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 05.08.2014, 16:06 | ||
|
Tester64, Правильное подключение заголовочных файлов
Чтобы использовать несколько классов в одном подключайте заголовочники обоих в используемом. Где хотите, лишь бы работало. А вот потом, когда начнут проблемы возникать, когда начнете такие программы писать, тогда уже значит доберетесь и до перетряхивания хедеров.
1
|
||
| 05.08.2014, 16:06 | |
|
Помогаю со студенческими работами здесь
13
Почему нельзя есть все подряд? Зачем нужен двоичный файл? Зачем нужен .def - файл? Зачем нужен файл Project1PCH1.h Зачем нужен TLH файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|