valker's blog

valker's blog: идеи, размышления, наблюдения

Указатель на функцию-член класса (С++)

3 комментария

При прочтеннии этой ветки форума RSDN пришла такая мысль, почему бы не трактовать функции-члены, как обычные функции, но с дополнительным параметром в начале списка — аналогом this, передающимся неявно.

код мог бы быть таким:

class A{
public: void f(void);
};

A a;
void (*pfn)(A*) = &A::f;
(*pfn)(&a);

Товарищ zaufi подсказал, что такое преобразование делается в библиотеке boost::bind.
Но вот вопрос: почему этого не сделано на уровне языка?

Written by valker

Август 10, 2006 в 10:02 дп

Опубликовано в жизнь

комментария 3

Subscribe to comments with RSS.

  1. Меня самого это бесит. Вторый сутки уже ищу, как в сишный модуль запишнуть указатель на функцию-член…. С одной стороны скорее всего дело в прямоте указателя. Т.е. запуская функцию по указателю типа мы сразу попадаем в функцию и все. А тут надо еще параметр какой-то неявный передавать.

    Но с другой — могли бы сделать какой-нить парамет __bind2stdcall чтобы для всех таких функций-членов при создании экземпляра объекта/класса создавалась какая-то мелкая функция (отдельный экземпляр для каждой функции), чисто вызывающая нужный член с параметром. Там блин даже параметры в эту функцию передавать не надо. Просто создать статческую функцию с двумя адресами (this и на метод) и командой call.

    БЕСИТ!!!!! МЕЛКОСОФТ КАК ВСЕГДА НЕ МОЖЕТ НИЧЕГО ДО УМАД ДОВЕСТИ….
    Очень жалею, что паскаль не так распространен. Но на нем те же вещи делаются гораздо быстрее и гораздо стабильнее.

    Cliff

    Январь 28, 2007 at 9:08 пп

  2. Не смешите — паскаль примитивнейший язык. Другими словами он сосет в таких задачах.

    Clein

    Ноябрь 23, 2008 at 4:05 пп

  3. Человеку небось не лабораторную в университет написать надо )

    Clein

    Ноябрь 23, 2008 at 4:06 пп


Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: