我正在尝试使用std :: array作为QHash类的键:
QHash<std::array<char, 6>, QString> _hash;
根据需要,我已经重载了qHash函数:
inline uint qHash(const std::array<char, 6> &key, uint seed)
{
return ::qHashBits(key.data(), key.size(), seed);
}
std :: array本身支持==运算符。
但是在编译时出现错误“ 没有匹配的函数来调用qHash(const std::array<char, 6>&)
”。
std :: tuple的情况与此相同。尽管std :: pair可以正常工作。常规结构也是如此。
我在做什么错了?
UPD
我也尝试了qHash的一个参数形式:
inline uint qHash(const std::array<char, 6> &key)
{
return ::qHashBits(key.data(), key.size(), 0);
}
完全一样的结果。
UPD2
这是一个示例main.cpp文件。项目中没有其他代码。
#include <array>
#include <QHash>
static QHash<std::array<char, 6>, QString> hashByArray;
uint qHash(const std::array<char, 6>& key)
{
return 0;
}
int main(int argc, char *argv[])
{
hashByArray.insert({ 0, 0, 0, 0, 0, 0 }, "Hello");
return 0;
}