为我的类编写自定义 qhash() 函数
Writing custom qhash() function for my class
我想使用QHash<MyOwnClass&, MyOwnEnum>
(如果它很重要,作为MyOwnClass
的成员(。文档说应该定义一个全局qhash(MyOwnClass&)
函数。好的,例如:
globals.h:
#pragma once
#include "myOwnClass.h"
#include <QHashFunctions>
class MyOwnClass;
inline uint qHash(MyOwnClass& clz);
全局.cpp:
#include "globals.h"
inline uint qHash(MyOwnClass& clz) {
return qHash(clz.getSomeQStringMember());
}
我应该在哪里包含我的globals.h
,以便编译器能够查看和使用它?
我正在使用MSVS2015和Qt 5.8。我相信这个问题很愚蠢,并且有非常简单的解决方案,只要答案可以帮助像我这样的许多人。
如果您有将在哈希中使用的自定义类型,最好只是在声明 MyOwnClass
的同一标头中声明该函数。毕竟,它与该类齐头并进,您不需要globals.h
即可获得全局函数,它只需要在全局范围内而不是静态的。
您还必须#include <QHash>
定义哈希函数(实现(的位置,以便它可以访问现有的哈希实现。
编辑:我看到您包含#include <QHashFunctions>
应该为您提供散列QString
的功能。因此,您可能需要清理并重新生成项目。
@dtech的答案值得一读,但它并没有完全解决我的问题。
不能在QHash
中使用非常量引用作为键,所以我应该将其声明为 QHash<const MyOwnClass&, MyOwnEnum>
并定义函数qHash(const MyOwnClass& clz)
(当然,只要是相等运算符(。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何覆盖 qHash() 函数?
- 通过带有成员函数指针的 QHash 调用成员函数的正确方法
- 为我的类编写自定义 qhash() 函数