Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что лучше WindowProc как статический член класса, или как друг? 
:(
    Опции темы
Royan
Дата 27.3.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Стоит задача - написать класс обертку (wrapper) для работы с виндовозным окном. Выскажите свои "за" и "против" по следующему вопросу. Функцию обработки сообщений окна (WindowProc) следует сделать

1) Статической и получать доступ к членам класса, например так:
Код

//...
CREATESTRUCT cs;
//...
cs.lpCreateParams = (void *)this;
//Внутри WindowProc
GetWindowLongPtr(hWnd, GWLP_USERDATA)

2) Другом класса

Всем заранее спасибо за высказанные мысли.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Coocky
Дата 27.3.2005, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Royan
А ты попробуй сделать статической smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 27.3.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Попробую привести пример смысла статической функции smile
В зависимости от назначения твоего приложения могут быть ситуации, когда объекты одного и того же класса должны совместно использовать один или несколько элементов данных.
Для совместного использования элемента класса ты должен объявить этот элемент как static,правильно?
Со статиком у нас работает кто?Правильно-статическая функция smile
Теперь прикинь будет ли у тебя переменная(ные),которая потребуется разным классам.
А так из твоего кода я ничего не понял,будет ли такие(ая) переменая....Так что тебе решать smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 27.3.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Да,забыл сказать некто Майерс,если не ошибаюсь,проводил иследование.Так вот оказалось,
что дружественные функции могут улучшать инкапсуляцию класса!
дружественная функция лежит вне области видимости класса,но она фактически является элементом его интерфейса.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Royan
Дата 28.3.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



2Coocky Я не случайно спросил, сейчас у меня все работает при статической WindowProc
А где случаем не помнишь ты Майерса читал?


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
chipset
Дата 28.3.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 1
Всего: 165



А в чём проблема поместить функцию в небольшой функтор чтобы не терять связи с классом?

Цитата(Royan @ 28.3.2005, 05:14)
А где случаем не помнишь ты Майерса читал?

Effective C++
Effective STL
Здесь, #6 и #16.
Класные кстати книги.

Это сообщение отредактировал(а) chipset - 28.3.2005, 21:27


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Coocky
Дата 28.3.2005, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



chipset
Цитата
А в чём проблема поместить функцию в небольшой функтор чтобы не терять связи с классом?

Чип а можно без ругательств.Переведи,плиз smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
chipset
Дата 28.3.2005, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 1
Всего: 165



Цитата(Coocky @ 28.3.2005, 10:39)
Чип а можно без ругательств.Переведи,плиз smile

Фигня такая, чтобы передавать указатели на отдельные методы классов, передается линк на обьект класса который будет заюзывать функция.
Таким образом можно передавать статической функции линку на обьект класса, чтобы она его использовала вместо this.

Это сообщение отредактировал(а) chipset - 28.3.2005, 21:42


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Coocky
Дата 28.3.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



chipset
Еще раз повторяю-чел создает свой класс.класс глобальный и обьемный.Нет большого смысла в статике.Есть больший смысл в дружественной функции.
Цитата
Таким образом можно передавать статической функции линку на класс, чтобы она его использовала вместо this.

Приведи мне смысл этого для примера Royan_а smile
Дружище-это не спор,это попытка получить истину.Парень правильно задал вопрос.Действительно при разработке ООП мы мало уделяем мелочам.Удобности и универсальности....
Добавлено @ 21:47
Цитата
Стоит задача - написать класс обертку (wrapper) для работы с виндовозным окном

А это уже почти самый верх иерархии smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
chipset
Дата 28.3.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 1
Всего: 165



Тогда я целиком за статическую функцию. Должно быть как можно меньше функций не в классах.

Это сообщение отредактировал(а) chipset - 28.3.2005, 22:16


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.