使用qFromBigEndian编译错误

时间:2010-07-23 11:03:57

标签: c++ qt templates

我正在尝试使用qFromBigEndian从通过udp套接字接收的字节流中读取32位int。

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

编译它会出现以下错误:   错误:从'uchar *'无效转换为'qint32'

Qt文档说:

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.

显然我做的事情有点傻,而且我已经羞愧地垂头丧气了。有人可以解释一下我明显的错误吗?

1 个答案:

答案 0 :(得分:6)

请注意qFromBigEndian(const uchar *src)是一个功能模板。

您缺少模板参数,请使用

addr = qFromBigEndian<qint32>(data);
相反,事情将按预期发挥作用。