|
1 / 1 / 0
Регистрация: 02.09.2010
Сообщений: 3
|
|
Отделение интерфейса от реализации класса: компиляция кода реализации02.09.2010, 01:44. Показов 7312. Ответов 5
Метки нет (Все метки)
Доброго времени суток,
У меня возникла проблема с отделением интерфейса от реализации класса. Допустим, у меня есть три файла: 1. заголовочный файл Class.h с прототипами функций; 2. файл реализации Class.cpp с определениями функций без функции main; 3. файл клиента Start.cpp, использующий класс Class Я хочу скомпилировать объектный код реализации класс. Однако при запуске компиляции Class.cpp компилятор Dev-C++ выдает ошибку: "[Linker error] undefined reference to `WinMain@16'" (короче, ему для счастья функции main() не хватает). Как же скомпилировать объектный код реализации класса? Дейтел о таких подставах не предупреждал ![]() Сам по себе код в порядке: пока я не пытаюсь отделить интерфейс от реализации и работаю с двумя файлами вместо трех (заголовочным, в котором определены функции, и файлом клиента) проблем не возникает. Заранее спасибо за помощь.
1
|
|
| 02.09.2010, 01:44 | |
|
Ответы с готовыми решениями:
5
Отделение интерфейса класса от реализации Отделение интерфейса класса от его реализации
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 02.09.2010, 04:18 | |
|
LuciLumi, а можно краем глаза взглянуть на Ваш код?
0
|
|
|
1 / 1 / 0
Регистрация: 02.09.2010
Сообщений: 3
|
||||||||||||||||
| 02.09.2010, 07:59 [ТС] | ||||||||||||||||
|
Nameless One, большое спасибо за ответ!
Мой "родной" код довольно громоздкий, не думаю, что стоит Вас им грузить. Вот пример кода, найденный мной в одной из старых тем этого форума. При компиляции Empty.cpp Dev-C++ выдает ту же ошибку. Все три файла лежат в одной папке, и всё вроде бы должно работать, ан нет... Empty.h
0
|
||||||||||||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
| 02.09.2010, 08:35 | ||||||
|
LuciLumi, это не решит проблему, но все же скажу на будущее вот что. Заголовочные файлы с описанием функций и классов нужно защищать от повторного включения вот так (на примере приведенных Вами файлов):
По поводу Вашей проблемы - я не знаком со средой Dev-C++, но догадываюсь, в чем может быть ошибка. Судя по тому, что компилятор не может найти ссылку на функцию WinMain@16 (это главная функция WinAPI-приложения, принимает параметров в общей сложности на 16 байт), Вы создаете не тот тип проекта, а именно, что-нибудь типа Win32 Application (приложение Win32). Вам же нужно создавать консольное приложение (console application), для которого как раз главной функцией будет не WinMain, а просто main
1
|
||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||
| 02.09.2010, 10:11 | |||||||
1
|
|||||||
|
1 / 1 / 0
Регистрация: 02.09.2010
Сообщений: 3
|
|
| 03.09.2010, 00:24 [ТС] | |
|
Nameless One, easybudda, огромное спасибо за помощь!
Проблема действительно оказалась в типе проекта. С одной стороны, ошибка совершенно дурацкая, с другой - мне даже в голову не приходило обратить внимание на тип, пока Вы не подсказали. Отдельное спасибо Nameless One за предупреждение о защите заголовочных файлов от повторного включения. Мне как самоучке особенно важны такие замечания.
0
|
|
| 03.09.2010, 00:24 | |
|
Помогаю со студенческими работами здесь
6
Отделение интерфейса от реализации Класс, отделение интерфейса от реализации Отделение интерфейса класса от реализации (Ошибка при компиляции) Отделение интерфейса от реализации
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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(), которая. . .
|