|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.09.2012, 07:21 | #1 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 20
|
Использование классов
Всем, привет!
Я создал класс, который работает прекрасно для одного приложения в котором я его создаю (в Visual C++). Создал Example.h и Example.cpp. Как сделать? чтобы при написании следующего приложения я мог просто включить Example.h и класс заработал? Проблема в том, что я создал класс в одном приложении и точно такой же в другом. Одно приложение записывает объект класса в файл (напр. example.dat), а второе не может считать этот объект из указанного выше файла. Заранее благодарю! |
17.09.2012, 10:11 | #2 |
Форумчанин
Регистрация: 22.12.2011
Сообщений: 378
|
а на код посмотреть можно?
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
|
17.09.2012, 10:17 | #3 |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Видимо, две реализации немного отличаются. Вы можете просто подключать файл реализации (Example.cpp) к проекту, он скомпилируется вместе с другими исходниками и все будет хорошо. Вы также можете отдельно прекомпилировать его в объектный файл или в библиотеку и использовать потом в других программах уже без необходимости компилировать. Ну и наконец Вы можете вынести класс в отдельную динамическую библиотеку и использовать в обеих программах.
Форматируйте код, будьте людьми.
|
17.09.2012, 12:13 | #4 | |
Пользователь
Регистрация: 14.12.2010
Сообщений: 20
|
Цитата:
Скажите, пожалуйста как вынести класс в dll. Запарился ), не получается. Обычные функции могу, а как сделать это с классом. Где добавлять extern "C" _declspec(dllexport)? Последний раз редактировалось Stilet; 17.09.2012 в 17:54. |
|
17.09.2012, 17:14 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
class _declspec(dllexport) CMyClass { ... };
Кроме того можно перед каждым методом в cpp файле. |
17.09.2012, 20:42 | #6 |
Форумчанин
Регистрация: 22.12.2011
Сообщений: 378
|
Удобнее всего работать с классом из DLL по подобию COM. Т.е. создаете абстрактный класс(интерфейс), в DLL делаете еще один класс наследуете функции интерфейса, реализуете их.
В функции DllMain выделяете память под указатель на объект класса и экспортируете функцию которая записывает адрес объекта (грубо говоря) в переданный ей указатель. Осталось только явно загрузить DLL и получить адрес экспортируемой функции и вот все в принципе. Почитайте про COM-объекты и явную загрузку DLL
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
Последний раз редактировалось kineziz; 17.09.2012 в 20:45. |
18.09.2012, 15:05 | #7 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 20
|
|
18.09.2012, 15:06 | #8 | |
Пользователь
Регистрация: 14.12.2010
Сообщений: 20
|
Цитата:
|
|
24.09.2012, 09:39 | #9 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 20
|
Всем, очередной привет!
Как использовать одну реализацию класса, я разобрался )) И сузил неполадки в проем приложении. Ошибка происходит при чтении из файла объекта класса. Т.е. я записываю с помощью WriteFile() объект своего класса в файл, потом считываю из файла с помощью ReadFile. Призавершении программы происходит ошибка. В классе есть элемент-данные, память под которые выделяется из кучи с помощью HeapAlloc(). Если я уберу из деструктора HeapFree(), то все работает нормально, если оставлю то ошибка доступа. Кто сможет мне помочь? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Использование классов | SoftKoc | Свободное общение | 5 | 11.02.2011 20:05 |
С++ использование классов | moron | Помощь студентам | 3 | 06.04.2010 00:30 |
С++ использование классов | moron | Общие вопросы C/C++ | 0 | 03.04.2010 22:40 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |