Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Dynamic_downcast

6.0K
04 августа 2004 года
Karp
10 / / 22.06.2004
Добрый день!
Есть диалог. В нем ListCtrl. Так же есть класс, наследованный от CListCtrl, который принимает на себя обработку сообщений от ListCtrl и в котором нужно обрабатывать переменную, получаемую из класса диалог. В методе класса ListCtrl делаю так:

CWnd *f = GetParent();
CMy_CompareFolders* g = DYNAMIC_DOWNCAST( CMy_CompareFolders, f );


и, по идее, должен получить указатель на класс диалога, а получаю
error C2039: 'classCMy_CompareFolders' : is not a member of 'CMy_CompareFolders' и
error C2065: 'classCMy_CompareFolders' : undeclared identifier

Предвижу вопрос.
#include "My_CompareFolders.h" прописал в cpp.

, когда же делаю так:

CWnd *f = GetParent();
CMy_CompareFolders* g = (CMy_CompareFolders*)f;


то ошибок нет, и я могу получить необходимую мне переменную-член из класса диалога.

Не понимаю почему не получается с DYNAMIC_DOWNCAST, ведь хочется так, что б более правильно?
Может кто знает почему не проходит превый вариант?
Заранее благодарен за ответ!!!
527
05 августа 2004 года
pavor
275 / / 28.09.2003
Цитата:
Originally posted by Karp
Добрый день!
Есть диалог. В нем ListCtrl. Так же есть класс, наследованный от CListCtrl, который принимает на себя обработку сообщений от ListCtrl и в котором нужно обрабатывать переменную, получаемую из класса диалог. В методе класса ListCtrl делаю так:

CWnd *f = GetParent();
CMy_CompareFolders* g = DYNAMIC_DOWNCAST( CMy_CompareFolders, f );


и, по идее, должен получить указатель на класс диалога, а получаю
error C2039: 'classCMy_CompareFolders' : is not a member of 'CMy_CompareFolders' и
error C2065: 'classCMy_CompareFolders' : undeclared identifier

Предвижу вопрос.
#include "My_CompareFolders.h" прописал в cpp.

, когда же делаю так:

CWnd *f = GetParent();
CMy_CompareFolders* g = (CMy_CompareFolders*)f;


то ошибок нет, и я могу получить необходимую мне переменную-член из класса диалога.

Не понимаю почему не получается с DYNAMIC_DOWNCAST, ведь хочется так, что б более правильно?
Может кто знает почему не проходит превый вариант?
Заранее благодарен за ответ!!!


Потому что класс CMy_CompareFolders должен быть с DECLARE_DYNAMIC(), IMPLEMENT_DINAMIC()

6.0K
05 августа 2004 года
Karp
10 / / 22.06.2004
Цитата:
Originally posted by pavor

Потому что класс CMy_CompareFolders должен быть с DECLARE_DYNAMIC(), IMPLEMENT_DINAMIC()



В том -то и дело, что я их включил - а ничего не поменялось (
DECLARE_DYNAMIC( CMy_CompareFolders ) и IMPLEMENT_DYNAMIC( CMy_CompareFolders, CListCtrl ) ) появляются те же ошибки. Может что еще надо прописать?

527
06 августа 2004 года
pavor
275 / / 28.09.2003
Цитата:
Originally posted by Karp


В том -то и дело, что я их включил - а ничего не поменялось (
DECLARE_DYNAMIC( CMy_CompareFolders ) и IMPLEMENT_DYNAMIC( CMy_CompareFolders, CListCtrl ) ) появляются те же ошибки. Может что еще надо прописать?


Ну не знаю, макрос у него такой:
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
Поэтому вряд ли можно ожидать, что такого идентификатора нет.

8.0K
06 августа 2004 года
Телевизор
3 / / 23.07.2004
Цитата:
Originally posted by pavor

Ну не знаю, макрос у него такой:
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
Поэтому вряд ли можно ожидать, что такого идентификатора нет.



А в свойствах проекта не пробовали ковыряться?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог