объявить как указатель на функцию и инициализировать в той же строке - программирование
Подтвердить что ты не робот

объявить как указатель на функцию и инициализировать в той же строке

В 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++ с любым другим типом.

4b9b3361

Ответ 1

Вместо того, чтобы объявлять typedef, просто используйте имя переменной, которую вы хотите:

void (*fp)(void) = &f; // variable fp pointing to function f

Ответ 2

Ответ таков: да, можно "сделать эту строку" в C++ в точности так, как написано в вашем вопросе выше. Причина, по которой та же самая причина, почему вы можете сделать это также в C: есть неявное преобразование из функции в указатель на функцию. Попробуйте это здесь.