使用std :: array作为QHash的键

时间:2019-09-20 16:10:29

标签: c++ qt stl

我正在尝试使用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;
}

0 个答案:

没有答案
相关问题