|
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 4
|
|||||||||||||||||||||
Унаследовать класс, но так, чтобы не знать его типы26.09.2018, 17:38. Показов 845. Ответов 3
Метки нет (Все метки)
Здравствуйте!
Можно ли как-нибудь унаследовать класс так, чтобы те типы, которые он использует, оставались неизвестными для производного класса? Допустим некоторый класс использует WinAPI, мне нужно чтобы производный класс ничего не знал о WinAPI Например: Первый файл (WinApp.h):
Проблема появилась когда кроме m_hInst появилось еще очень много других типов. Да и вообще попахивает "костылями"... Добавлено через 2 часа 56 минут А вообще нормально будет если я все инклуды, которые хочу скрыть, оберну в namespace? например:
0
|
|||||||||||||||||||||
| 26.09.2018, 17:38 | |
|
Ответы с готовыми решениями:
3
Сколько книг прочел Evg, чтобы знать C++ так, как он знает его сейчас? Унаследовать класс MaskEdit и переопределить его процедуру |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||||||
| 26.09.2018, 20:21 | |||||||
|
mihakrvl, используйте идиому pimpl.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 26.09.2018
Сообщений: 4
|
|
| 27.09.2018, 03:25 [ТС] | |
|
DrOffset, спасибо огромное!
но всё же интересно, почему нельзя namespace? у меня конечно куча хлама там в моих WinApp/AndroidApp/MyApp но, вчера попытался вставить такое, и компилятор даже не стал ругаться ![]() точнее не компилятор (не могу пока компилировать так как наворотил дров), а этот, как его там называют, который прям в редакторе проверяет ошибки, в VisualStudio... может быть Intelisense (надеюсь не ошибаюсь)
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 27.09.2018, 08:23 | ||
|
Например функция в h-файле объявлена как void foo();, если вы включили этот файл в свой cpp в namespace some, то после работы препроцессора у вас получится объявление namespace some { void foo(); }. Так вот, при попытке вызывать эту функцию на этапе компиляции у вас все будет хорошо, но на этапе линковки линкер не найдет ее опрределения. Потому что функция some::foo() нигде не определена.Надо сказать, что на функции extern "C" это не распространяется, но во всех остальных случаях может приводить к интересным спецэффектам. Поэтому я и сказал, что "нельзя". Т.е. условно говоря "можно" в определенных ситуациях, когда есть понимание зачем и контроль над ситуацией, но т.к. вы этот вопрос задали, значит не вполне осознаете последствия, которые могут быть. У вас даже может быть все хорошо при определенной удаче, но потом внезапно все сломается. Если хотите изолировать заголовочные файлы, пользуйтесь предварительным объявлением имен оттуда, и/или pimpl.
1
|
||
| 27.09.2018, 08:23 | |
|
Помогаю со студенческими работами здесь
4
Что нужно знать, чтобы создать класс String?
Как сделать так, чтобы TextBox принимал только типы double и int? Унаследовать класс от Canvas Как сделать так, чтобы вводя в Edit1 Код клиента, он его оставлял в таблице одного и мог его распечатать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|