Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1

Избежать перевключения файлов

24.09.2015, 21:58. Показов 1404. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим есть файл a.h с некоторыми функциями и есть файл b.h. В файле a.h используются функции из b.h и мне надо использовать в файле b.h функции из a.h, возможно ли их связать вместе избегая перевключения файлов? Заранее спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2015, 21:58
Ответы с готовыми решениями:

Как избежать циклического включения заголовочных файлов?
Сделал в проге кучу классов и кучу указателей на них. В итоге при компиляции выдает кипу ошибок: Почти все или все они связаны с...

Как избежать перезаписи одноименных файлов в макросе?
Не силен в макросах. Записал макрос, который разделяет страницы и сохраняет в отдельный файл. Вот фрагмент макроса, строки сохранения: ...

Как избежать назначения владельцем файлов/папок при смене ж. дисков
Суть проблемы. Работая на одном компьютере появилась необходимость переставить жесткий диск на другой компьютер. Однако там меня поджидал...

14
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
24.09.2015, 22:03
В заголовочных файлах функции должны только объявляться, но не использоваться.
Тогда порядок их подключения не принципиален!
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.09.2015, 22:06  [ТС]
zss, Подробней можно? То есть в 1 файле объявлять и определения подключать уже в остальных?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
24.09.2015, 22:09
makfak, как-то Вы неправильно функции в файлы объединяете.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
24.09.2015, 22:15
Лучший ответ Сообщение было отмечено GbaLog- как решение

Решение

Файлы должны быть такими: a.h,b.h - для объявления функций и a.cpp и b.cpp для описания функций.
соответственно оба .h файла подключаете к обоим .cpp файлам.
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.09.2015, 22:31  [ТС]
Kerry_Jr, Ну да.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
26.09.2015, 16:47  [ТС]
zss, Извините, что поднимаю эту тему снова, но возникла некоторая проблема, теперь я создал классы в файлах a.h и b.h. И в их private-члене a.h указал ClassB b;, а в b.h СlassA a;, но когда я подключаю к .срр файлам, мне ошибку выдает, что нет типа ClassB, потому что он подключен только в объявлении функций и членов класса, что в таком случае делать?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
26.09.2015, 16:49
Делайте предварительное объявление
a.h
C++
1
2
3
4
5
6
class B;
class A
{
....
   B* pb; // имейте ввиду, что задавать можно только указатели 
};
b.h
C++
1
2
3
4
5
6
class A;
class B
{
....
   A* pa;
};
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
26.09.2015, 16:56
Зачем разводить функции по разным файлам, если они по-отдельности использоваться не могут?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
26.09.2015, 17:05  [ТС]
zss, А по-другому не получится? Просто я с указателями на "вы"( вот такой я косячный ), попробовал и там мне ошибку выдало
request for member 'ExitProgramm' in '((Hero*)this)->Hero::s', which is of pointer type 'Scenario*' (maybe you meant to use '->' ?)|

Добавлено через 2 минуты
А все, проблему решил, прочитал ошибку внимательно.

Добавлено через 3 минуты
Enno, Могут, просто некоторые надо использовать и в других классах/функциях.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.09.2015, 17:08
Цитата Сообщение от zss Посмотреть сообщение
B* pb; // имейте ввиду, что задавать можно только указатели
не только.
можно ссылку например: все что угодно что не требует размера
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
27.09.2015, 06:01
Цитата Сообщение от makfak Посмотреть сообщение
Могут
Не могут, ты сам только что указал что функции/классы из одного ты используешь в другом и наоборот.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
03.10.2015, 13:21  [ТС]
Enno, Мне в 3-м файле могут понадобится функции из a.h, но не понадобятся функции из b.h, в таком случае при смене местами мне придется подключать оба файла, вместо одного.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
03.10.2015, 13:53
Цитата Сообщение от makfak Посмотреть сообщение
Мне в 3-м файле могут понадобится функции из a.h, но не понадобятся функции из b.h
Но в функциях из a требуются функции из b.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
03.10.2015, 20:22  [ТС]
Enno, Я не думаю, что стоит развивать этот разговор, если я по вашему не прав, то можете так считать, просто поэтому я не стану переделывать программу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2015, 20:22
Помогаю со студенческими работами здесь

Как создать file register, чтобы избежать создания одноименных файлов и упорядочить файлы на PC?
Доброго всем времени суток, Должна признаться, что пользователь Windows я достаточно безграмотный, но не безнадежный. Регулярно...

Проверка существования файлов, создание файлов и вывод содержимого файлов на принтер
Создать BAT-файл который поддерживает создание файлов проверку их и вывод на принтер. Как это реализовать?? Нужен текст файла!! ...

Избежать подделки!!!
Тема для меня Очень важна, Появилась у нас проблема ее суть: - на общем диске расположены шаблоны документов в Формате \\*.doc\\ что...

Избежать рекурсии
У меня есть код. Он вызывает ошибку рекурсии. Это можно избежать? def expr(TOKENS): #tokens = iter(TOKENS) expression = '' ...

Избежать IP конфликта
Есть одна большая сеть. Надо добавить оборудование которое имеет идентичные IP адреса . Что мне делать ? В наличии два маршрутиризатора HP...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru