Указатель на функцию-член класса (С++)
При прочтеннии этой ветки форума RSDN пришла такая мысль, почему бы не трактовать функции-члены, как обычные функции, но с дополнительным параметром в начале списка — аналогом this, передающимся неявно.
код мог бы быть таким:
class A{
public: void f(void);
};
A a;
void (*pfn)(A*) = &A::f;
(*pfn)(&a);
Товарищ zaufi подсказал, что такое преобразование делается в библиотеке boost::bind.
Но вот вопрос: почему этого не сделано на уровне языка?




Меня самого это бесит. Вторый сутки уже ищу, как в сишный модуль запишнуть указатель на функцию-член…. С одной стороны скорее всего дело в прямоте указателя. Т.е. запуская функцию по указателю типа мы сразу попадаем в функцию и все. А тут надо еще параметр какой-то неявный передавать.
Но с другой – могли бы сделать какой-нить парамет __bind2stdcall чтобы для всех таких функций-членов при создании экземпляра объекта/класса создавалась какая-то мелкая функция (отдельный экземпляр для каждой функции), чисто вызывающая нужный член с параметром. Там блин даже параметры в эту функцию передавать не надо. Просто создать статческую функцию с двумя адресами (this и на метод) и командой call.
БЕСИТ!!!!! МЕЛКОСОФТ КАК ВСЕГДА НЕ МОЖЕТ НИЧЕГО ДО УМАД ДОВЕСТИ….
Очень жалею, что паскаль не так распространен. Но на нем те же вещи делаются гораздо быстрее и гораздо стабильнее.
Cliff
Январь 28, 2007 в 9:08 пп
Не смешите – паскаль примитивнейший язык. Другими словами он сосет в таких задачах.
Clein
Ноябрь 23, 2008 в 4:05 пп
Человеку небось не лабораторную в университет написать надо )
Clein
Ноябрь 23, 2008 в 4:06 пп