Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: C++, приведение типов функций. Добавлено: 09.04.05 11:51  

Автор вопроса:  Neco | Web-сайт: neco.pisem.net | ICQ: 247906854 
А как мне привести один к другому тип Функции?
К примеру, хочу создать класс для создания окон - для этого мне надо будет произвести такое
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-сайт: neco.pisem.net
 Профиль | | #2
Добавлено: 09.04.05 19:48
Вот блин - неужели всё так категорично и невозможно...

Ответить

Номер ответа: 3
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #3 Добавлено: 10.04.05 06:27
А как, по-твоему, мемберы класса понимают, для какого именно инстанса их вызвали? Потому что им передают this первым параметром, только тебе об этом не говорят :) Так что да :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам