Константные методы в делегатах
От: Rothmans  
Дата: 14.03.06 11:22
Оценка:
Пытаюсь использовать код из статьи
Автор(ы): Александр Шаргин
Дата: 19.03.2003
Делегаты в CLR удобны, типобезопасны и эффективны. Последнее время на форумах RSDN часто поднимается вопрос о том, можно ли реализовать делегаты с аналогичными свойствами, оставаясь в рамках "чистого" C++. Оказывается, это вполне возможно. В этой статье я покажу, как это сделать.
Александра Шаргина про делегаты.
Прекрасная статья. Мне очень понравилось, огромное спасибо автору!

У меня VC7.1, соответственно использую версию для 7.0.
Все ок, только вот нашлось одно упущение (или я не понимаю может чего).
Компилятор начинает активно ругаться, если при создании делегата, в качестве аргумента для NewDelegate() передавать указатель на константный метод класса.

Я пришел к выводу, что const-методы не поддерживаются этой реализацией (для компилятора VC7.1 по крайней мере), и чтобы все заработало, добавил дополнительный шаблон. Я попросту скопировал реализацию CMethodDelegate, обозвав ее CConstMethodDelegate и добавил const к типу хранимого указателя на метод класса, соответственно поменяв тип конструктора. Плюс в третий раз перегрузил NewDelegate(), чтобы она принимала указатели на константные методы.
Теперь все компилируется.

Но есть подозрения, что я сам чего-то не понял, или существует какой-нибудь другой более правильный способ делать делегаты из константных методов на базе кода из статьи.

В общем, будучи новичком в С++, не хотел бы править такой красивый код из статьи самостоятельно.
Собственно, моя цель -- привлечь внимание автора к описанному аспекту (если в этом есть необходимость).

PS: обсуждение статьи просмторел, вопрос константных методов вроде не поднимался.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.