Как преобразовать void в typedef void (...) (плавать) - PullRequest
0 голосов
/ 11 июля 2019

У меня есть это на один класс:

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 Ответ

3 голосов
/ 11 июля 2019

Вы пытаетесь вызвать функцию с помощью updateFormattingProcess(x) и передать результат этого вызова функции (равный void) в качестве параметра типа void(*)(float).Вместо этого просто передайте указатель на него:

API_GenerateLayerData(1, data, count, &updateFormattingProcess);
//                                    ^ take the addresss of the function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...