我正在使用Qt进行开发,而strongHercul结构已将成员定义为uint64_t min
和uint64_t max
(我只是不想使用quint64)。
在尝试重载时<<运营商如下。
QDataStream &operator<<(QDataStream &ds, const strongHercul& hercul)
{
ds << hercul.min << hercul.max;
return ds;
}
QDataStream &operator>>(QDataStream &ds, strongHercul& hercul)
{
ds >> hercul.min >> hercul.max;
return ds;
}
我收到了以下错误:
error: ambiguous overload for 'operator<<'
(operand types are 'QDataStream' and 'const uint64_t {aka const long unsigned int}')
data_stream << hercul.min << hercul.max;
^
error: no match for 'operator>>'
(operand types are 'QDataStream' and 'uint64_t {aka long unsigned int}')
data_stream >> hercul.min >> hercul.max;
^
没有真正明白错误是什么?我认为这可能导致我运行的64位系统导致此代码在32位Windows上顺利运行?
问题是如何在使用uint64_t
时过载?
答案 0 :(得分:3)
从它的外观来看,QDataStream
没有uint64_t
的重载。结果,输出操作符尝试转换为多个选项之一,即存在歧义,并且对于输入操作符,需要非const
引用,并且没有匹配的运算符。您可能应该使用quint64
,unsigned long long int
似乎是uint64_t
而unsigned long int
是{{1}}。