Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

compile error using qFromBigEndian

Tags:

c++

templates

qt

I'm trying to use qFromBigEndian to read a 32-bit int from a byte stream received over a udp socket.

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

Compiling this gives the following error: error: invalid conversion from 'uchar*' to 'qint32'

The Qt documentation says:

T qFromBigEndian ( const uchar * 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.

Obviously I'm doing something a bit silly and I am already hanging my head in shame. Can someone please explain my obvious mistake?

like image 994
giles123 Avatar asked Jul 23 '10 11:07

giles123


1 Answers

Note that qFromBigEndian(const uchar *src) is a function template.

You're missing the template parameter, use

addr = qFromBigEndian<qint32>(data);

instead, and things will work as expected.

like image 120
Greg S Avatar answered Nov 02 '22 05:11

Greg S