Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Фитч   (30.09.2008 в 18:54)
Существует различие между указателями на обычные функции (и, что технически то же самое, на статические члены класса) и на методы объектов. Дело в том, что методам требуется дополнительный "скрытый аргумент", указатель this, который содержит адрес объекта, для которого вызывается метод. Этим аргументом занимается, компилятор, а вы просто пишете a->b, ни о чем не задумываясь.

Если вы хотите создавать ссылки (в смысле переменные) на методы конкретных объектов, то вам придется самому реализовывать эту возможность. Она, кстати, называется делегированием (соответственно переменная - делегат, delegate).

Хорошая статья по этому поводу была на сайте RSDN.ru; конкретную ссылку дать не могу, но статья, кажется, была в разделе Статьи->C/C++->C++ Arena и называлась "Делегаты в С++". Там приведена реализация класса-обертки через шаблоны.

ЗЫ:
Если нужны указатели на статические члены (не как в примере), то это решается проще.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: