Какой самый простой способ «привести» указатель на функцию-член к указателю на функцию в C ++? - PullRequest
4 голосов
/ 20 июля 2010

Я хочу предоставить функцию-член для параметра comp в алгоритме STL, например lower_bound (..., Compare comp).Функция comp () обращается к нестатическому полю-члену, поэтому он сам должен быть нестатическим элементом, но тип указателя на функцию нестатического члена отличается от типа обычного указателя функции.

Чтолучший способ обойти эту проблему?

Ответы [ 3 ]

7 голосов
/ 20 июля 2010

Это наиболее распространенное использование std::mem_fun и std::mem_fun_ref. Это шаблоны, которые создают функторы, которые вызывают указанную функцию-член. TR1 добавляет std::tr1::bind, что также полезно и более универсально (и если у вас нет TR1, это основано на Boost::bind). C ++ 0x будет включать std::bind в стандартную библиотеку (практически не отличается от TR1).

6 голосов
/ 20 июля 2010

Звучит так, как будто вы хотите, чтобы что-то вроде boost::bind связывало указатель функции-члена с экземпляром этого класса.

Не могли бы вы немного прояснить свой вопрос относительно того, что вы пытаетесьделать?Пример кода и т.д.?

1 голос
/ 20 июля 2010
#include<tr1/functional>

и использовать mem_fn ()

...