| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Проблемка с классами и инклюдами |
| Автор: Жывотное 8.10.2009, 11:40 | ||||
| Камрады, нужна помощь. После нескольких лет программирования на Java возникла необходимость вспомнить C++. И тут же вылезла проблема, с которой не смог сам справиться. Есть у меня два класса. В одном из них имеется член - объект второго класса. И нужно из этого объекта второго класса обратиться к методу первого класса. То есть, как я понимаю, в этом объекте должна быть ссылка на объект первого класса, которому он принадлежит. Проиллюстрирую на примере. MzMailer.h. Первый класс - главный, с него начинается выполнение программы:
MyWnd.h. Из этого класса нужно вызвать некий метод CMyApp::SomeMethod().
Сейчас класс CMyWnd ничего не знает о классе CMyApp, поэтому компилятор вполне резонно ругается. Но и простой #include "MyApp.h" в MyWnd.h не помогает. Соответственно вопрос - как быть в этой ситуации? И еще, в MyApp.h есть глобальный объект theApp, может быть его как-то можно использовать? |
| Автор: mes 8.10.2009, 11:46 |
| поиск по forward declaration в двух словах : в MyWin добавить строчку class CMyApp; |
| Автор: Жывотное 8.10.2009, 12:04 | ||||
Про forward declaration я знаю, пробовал. На описание класса CMyWnd перестает ругаться, но начинает ругаться на описание CMyApp:
|
| Автор: Anikmar 8.10.2009, 12:14 |
| В *.h forward-декларация, а в *.cpp сам #include |
| Автор: Жывотное 8.10.2009, 13:30 | ||||||||
| Итак, имеем: MyApp.h
MyWnd.h
CMyWnd.cpp
Теперь ругается линкер:
Если убрать из MyApp.h глобальный объект theApp, то всё компилируется и линкуется. Но приложение не запускается, судя по всему этот глобальный объект используется фреймворком для запуска. |
| Автор: zim22 8.10.2009, 13:38 | ||||
удали из файла MyApp.h эту строку
создай файл MyAPP.cpp c таким содержимым:
|
| Автор: Жывотное 8.10.2009, 14:22 |
| zim22, спасибо! Это помогло. |