我在一堂课上都这样:
typedef void(*PERCENTAGE_CALLBACK)(float);
我在类似这样的函数上使用它:
int API_GenerateLayerData(int layerIndex, QByteArray data, int dataSize, PERCENTAGE_CALLBACK callBack);
但是问题是我无法传递带有void返回类型的参数,而不能将float作为这样的参数:
void updateFormattingProcess(float value)
{
emit ChangeCompose(int(value));
}
void someFunction()
{
//It says cannot convert from 'void' to 'PERCENTAGE_CALLBACK'
API_GenerateLayerData(1, data, count, updateFormattingProcess(x));
}
答案 0 :(得分:3)
您正在尝试使用updateFormattingProcess(x)
调用该函数并将该函数调用的结果(即void
)作为类型void(*)(float)
的参数传递。相反,只需传递一个指向它的指针:
API_GenerateLayerData(1, data, count, &updateFormattingProcess);
// ^ take the addresss of the function