Это не связано с Qt.Для этого используйте std::function
:
void caller(int value, std::function<float(int)> delegate)
{
qDebug() << delegate(value);
}
float divide(int value)
{
return float(value) / 3;
}
int main(int argc, char *argv[])
{
caller(7, divide);
return 0;
}
Если вам нужно что-то сложное (например, сохранение состояния для создания прокси-функции и т. Д.), Вы также можете использовать объект с оператором ()
:
struct MyDelegate
{
float operator()(int value) { return float(value) / 3; }
};
float divide(int value)
{
return float(value) / 3;
}
void caller(int value, MyDelegate& delegate)
{
qDebug() << delegate(value);
}
int main(int argc, char *argv[])
{
MyDelegate delegate;
caller(7, delegate);
return 0;
}