ошибка компиляции с использованием qFromBigEndian - PullRequest
3 голосов
/ 23 июля 2010

Я пытаюсь использовать qFromBigEndian для чтения 32-битного int из потока байтов, полученного через сокет udp.

void processData(uchar *data)
{
  qint32 addr;
  addr = qFromBigEndian(data);
}

Компиляция этого дает следующую ошибку: ошибка: неверное преобразование из 'uchar *' в 'qint32'

Документация Qt гласит:

T qFromBigEndian (постоянное значение * src)

Reads a big-endian number from memory location src and returns the number in the host byte order representation. Note: Template type T can either be a qint16, qint32 or qint64.

Очевидно, я делаю что-то немного глупое, и я уже опускаю голову от стыда. Может кто-нибудь объяснить мою очевидную ошибку?

1 Ответ

6 голосов
/ 23 июля 2010

Обратите внимание, что qFromBigEndian(const uchar *src) является шаблоном функции.

Вам не хватает параметра шаблона, используйте

addr = qFromBigEndian<qint32>(data);

вместо этого, и все будет работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...