|
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
|
|||||||||||||||||||||
Избавление от includes в header файлах и последствия30.05.2020, 21:36. Показов 663. Ответов 2
Всем привет.
Пишу программу и ввиду того, что особо не задумывался, получилось так, что мои .h файлы включают в себя довольно большое количество #include. Хочу избавиться от них Как структурировать приватные или защищённые переменные в классе? Сразу скажу, что кидать их (переменные) в cpp файл не хочу (хоть и согласен, что они являются частью имплементации и по сути должны бы, по хорошему, быть в cpp файлах, но меня от этого решения отталкивает невозможность потенциального полиморфизма (на функционал friend пофиг)), пускай остаются в хедерах В общем, я знаю, что есть такая вещь как forward declaration. Эта вещь безусловно будет компилирорваться, но только при условии, что приватная (ну или защищенная) переменная будет типа указателя или ссылки Меня бь это вполне устроило, если бы не одно "но". Сначала их было два, но я вроде бы как нашёл решение для первого. То первое "но" заключалось в том, как сохранить значение, если вдруг оно было возвращено вызванной публичной функцией из вне. Ведь, если мы возвращаем указатель, то его значение можно изменить в любой точке программы. Тут я понял, что могу использовать дескриптор const Например у меня есть два класса: Person и Car Вот один:
Но я всё-таки создаю этот пост ибо есть еще одно "но", о котором я упомянул выше. И оно заключается вот в чём: что, если мне нужен еще один конструктор класса Person, в который я бы мог передать экземпляр класса Car, чтобы записать это значение в приватное или защищённое поле этого класса. То есть вот так:
Если я передам его как указатель, то всё равно, изменив этот указатель где-нибудь снаружи, изменится и внутри класса тоже Ага, может быть мне его передать как константу, вот так:
Какое решение этой проблемы вы мне посоветуете? Или может быть я вообще пошёл не тем путём и для того чтобы избавиться от includes в хедерах есть какое-то другое элегантное решение? Заранее благодарю!
0
|
|||||||||||||||||||||
| 30.05.2020, 21:36 | |
|
Ответы с готовыми решениями:
2
Ошибки в файлах шаблонах header.tpl, footer.tpl
|
|
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
|
|||
| 30.05.2020, 21:45 | |||
|
Добавлено через 3 минуты
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 30.05.2020, 22:39 | |||||||||||||
смысл прятать от вызывающей стороны класс Car,если он все равно должен быть ей доступен? рассмотрим код:
person.hpp не подтянул car.hpp,этот код бы не скомпилировался.
0
|
|||||||||||||
| 30.05.2020, 22:39 | |
|
Помогаю со студенческими работами здесь
3
C++ includes или как исправить ошибки
Не могу создать 2 класса header-composition и header-social
Какая СУБД хранит данные в файлах с расширением .dat и индексы в файлах .k01, k02 и т.д.? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
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 через установщик. . . .
|