Указатели функций C ++ и предустановка аргументов - PullRequest
0 голосов
/ 23 августа 2010

Скажите, у меня есть функция f(a, b, c). Можно ли создать указатели на функции g и h так, чтобы при использовании g и h они использовали предопределенное значение для одного из аргументов?

Например, (*g)(b, c) будет эквивалентно f(1, b, c), а (*h)(b, c) будет эквивалентно вызову f(2, b, c).

Причина, по которой я это делаю, заключается в том, что я вызываю функцию, на которую я могу получить указатель (через dlsym), и эта функция имеет совершенно разное поведение в зависимости от того, какой первый аргумент (настолько, что они на самом деле это не одно и то же). Более того, переменная указателя функции, которая используется в основной программе, обычно может принимать только два аргумента, поскольку это особый случай, когда импортируемая функция имеет три (но на самом деле необходимо только два, один по сути является параметром настроек).

Спасибо.

1 Ответ

3 голосов
/ 23 августа 2010

Я не понимаю, почему вы можете сделать это, если вы определили функцию g, на которую указывает

void gfunc(int b, int c) { 
  f (1, b, c); 
}
g = &gfunc;

Лучший способ сделать это в C ++, вероятно, использовать функторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...