Ответ 1
Вместо того, чтобы объявлять typedef
, просто используйте имя переменной, которую вы хотите:
void (*fp)(void) = &f; // variable fp pointing to function f
В C++, как мы делаем следующее
// fundamental language construct
type name = value;
// for example
int x = y;
с указателями на функции?
typedef char(*FP)(unsigned);
// AFAIK not possible in C++
FP x = y;
Я могу использовать лямбды
FP x = [](unsigned k) -> char { return char(k); };
Но я не знаю, как это сделать без лямбды. Есть идеи? Это не ответ. мы знаем, что это работает:
void whatever () {}
typedef void (*FP) (void);
FP x = whatever;
Вопрос в том, можно ли сделать это одной строкой в C++. Как можно сделать это в одной строке в C++ с любым другим типом.
Вместо того, чтобы объявлять typedef
, просто используйте имя переменной, которую вы хотите:
void (*fp)(void) = &f; // variable fp pointing to function f
Ответ таков: да, можно "сделать эту строку" в C++ в точности так, как написано в вашем вопросе выше. Причина, по которой та же самая причина, почему вы можете сделать это также в C: есть неявное преобразование из функции в указатель на функцию. Попробуйте это здесь.