如何将void转换为typedef void(...)(float)

时间:2019-07-11 07:41:22

标签: c++ qt

我在一堂课上都这样:

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));
}

1 个答案:

答案 0 :(得分:3)

您正在尝试使用updateFormattingProcess(x)调用该函数并将该函数调用的结果(即void)作为类型void(*)(float)的参数传递。相反,只需传递一个指向它的指针:

API_GenerateLayerData(1, data, count, &updateFormattingProcess);
//                                    ^ take the addresss of the function