Страница: 1 |
Страница: 1 |
Вопрос: C++, приведение типов функций.
Добавлено: 09.04.05 11:51
Автор вопроса: Neco | Web-сайт:
А как мне привести один к другому тип Функции?
К примеру, хочу создать класс для создания окон - для этого мне надо будет произвести такое
wc.lpfnWndProc = (WNDPROC) WndProc;
Однако, если WndProc является private членом класса, который я создаю, то эта запись будет эквивалентна (как я понял) этому:
wc.lpfnWndProc = (WNDPROC) this->WndProc;
И в результате дотошный компилятор выплюнет ошибку
error C2440: 'type cast' : cannot convert from '' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
Если плюнуть, объявить WndProc в общем модуле, то появляется куча проблем, таких как:
1. Смешивание сообщений - соощения всем окнам каждого экземпляра класса будут лезть в одну функцию и чтобы отреагировать на них каждому экземпляру отдельно надо будет создавать тип {HWND,clsPointer} как это я на Васе делал (на сишке это будет ещё один гимор для меня).
2. Ощущение, что что-то я делаю неправильно.
3. Ну и, наверное, что-то ещё, о чём я пока не знаю... 8)
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 09.04.05 15:11
Да нет, всё правильно
Функция-член класса имеет дополнительный неявный параметр, то самый this, а винда его откуда возьмёт? Число параметров разное, как минимум.
Так что в модуль, в модуль
Номер ответа: 2
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #2
Добавлено: 09.04.05 19:48
Вот блин - неужели всё так категорично и невозможно...
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 10.04.05 06:27
А как, по-твоему, мемберы класса понимают, для какого именно инстанса их вызвали? Потому что им передают this первым параметром, только тебе об этом не говорят Так что да