Ваш вопрос не имеет смысла. Кому оператора вы хотите позвонить?
X a, b, c;
LEGACY_CODE(???); // what -- a(), b(), or c()?
Итак, короче говоря, вы не можете. Функция-член X::operator()
не является свойством только одного класса, а скорее связана с экземпляром объекта типа X
.
Поищите на этом сайте слова "функция-член" и "обратный вызов", чтобы получить представление о спектре возможных подходов к решению связанных проблем.
Самый грубый и, возможно, небезопасный для использования обходной путь к предоставлению бесплатной функции будет выглядеть так:
X * current_X; // ugh, a global
int dispatch(int n) { current_X->operator()(n); }
int main()
{
X a;
current_X = &a;
LEGACY_CODE(dispatch);
}
Вы можете видеть, куда это идет ...