Страница: 1 |
Вопрос: C++, приведение типов функций. | Добавлено: 09.04.05 11:51 |
Автор вопроса: ![]() |
А как мне привести один к другому тип Функции?
К примеру, хочу создать класс для создания окон - для этого мне надо будет произвести такое 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 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #1 | Добавлено: 09.04.05 15:11 |
Да нет, всё правильно ![]() Функция-член класса имеет дополнительный неявный параметр, то самый this, а винда его откуда возьмёт? Число параметров разное, как минимум. Так что в модуль, в модуль ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 09.04.05 19:48 |
Вот блин - неужели всё так категорично и невозможно... |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #3 | Добавлено: 10.04.05 06:27 |
А как, по-твоему, мемберы класса понимают, для какого именно инстанса их вызвали? Потому что им передают this первым параметром, только тебе об этом не говорят ![]() ![]() |
Страница: 1 |
|