在C#中,我们声明此类的委托函数:
public delegate void MyClassDelegate(float num);
然后我们可以将其用于其他功能,例如:
public int SomeFunction(float num, MyClass.MyClassDelegate del);
如何在QT上执行此操作?
答案 0 :(得分:0)
它与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;
}