![]() |
|
Модераторы: bsa |
![]()
|
|
| Жывотное |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
Камрады, нужна помощь.
После нескольких лет программирования на Java возникла необходимость вспомнить C++. И тут же вылезла проблема, с которой не смог сам справиться. Есть у меня два класса. В одном из них имеется член - объект второго класса. И нужно из этого объекта второго класса обратиться к методу первого класса. То есть, как я понимаю, в этом объекте должна быть ссылка на объект первого класса, которому он принадлежит. Проиллюстрирую на примере. MzMailer.h. Первый класс - главный, с него начинается выполнение программы:
MyWnd.h. Из этого класса нужно вызвать некий метод CMyApp::SomeMethod().
Сейчас класс CMyWnd ничего не знает о классе CMyApp, поэтому компилятор вполне резонно ругается. Но и простой #include "MyApp.h" в MyWnd.h не помогает. Соответственно вопрос - как быть в этой ситуации? И еще, в MyApp.h есть глобальный объект theApp, может быть его как-то можно использовать? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
поиск по forward declaration
в двух словах : в MyWin добавить строчку class CMyApp; |
|||
|
||||
| Жывотное |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
Про forward declaration я знаю, пробовал. На описание класса CMyWnd перестает ругаться, но начинает ругаться на описание CMyApp:
|
||||
|
|||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
В *.h forward-декларация, а в *.cpp сам #include
|
|||
|
||||
| Жывотное |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
Итак, имеем:
MyApp.h
MyWnd.h
CMyWnd.cpp
Теперь ругается линкер:
Если убрать из MyApp.h глобальный объект theApp, то всё компилируется и линкуется. Но приложение не запускается, судя по всему этот глобальный объект используется фреймворком для запуска. |
||||||||
|
|||||||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
удали из файла MyApp.h эту строку
создай файл MyAPP.cpp c таким содержимым:
|
||||
|
|||||
| Жывотное |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 6.7.2009 Репутация: нет Всего: 1 |
zim22, спасибо! Это помогло.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |