问题标签 [qhash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
181 浏览

c++ - QSet 附加自定义对象

我有以下课程

我想要的只是有一个QSet<Test>我将插入一些 Test 对象的地方。

问题是由于某种原因我收到以下错误,我不知道为什么或如何解决它。

C:\Qt\5.14.2\msvc2017_64\include\QtCore/qhashfunctions.h(118): 错误 C2665: 'qHash': 24 个重载都不能转换所有参数类型 C:\Qt\5.14.2\msvc2017_64 \include\QtCore/qlocale.h(62): 注意: 可能是 'uint qHash(const QLocale &,uint) noexcept' C:\Qt\5.14.2\msvc2017_64\include\QtCore/qregexp.h(56):注意:或
正在使用 [ T=Test ] C:\Users\vlad.dumitru\CLionProjects\Test\main.cpp(11) 编译:注意:请参阅对正在编译的类模板实例化 'QSet' 的引用 C:\Qt\5.14.2\ msvc2017_64\include\QtCore/qhashfunctions.h(118):错误 C2056:非法表达式 NMAKE:致命错误 U1077:'C:\PROGRA~2\MICROS~2\2017\BUILDT~1\VC\Tools\MSVC\1416~ 1.270\bin\Hostx64\x64\cl.exe' : 返回码 '0x2' 停止。NMAKE:致命错误 U1077:'"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"':返回代码' 0x2' 停止。NMAKE:致命错误 U1077:'"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"':返回代码' 0x2' 停止。NMAKE : 致命错误 U1077: '"C:

你们有谁知道我该如何解决这个问题?

更新:

我确实编写了我需要的这两个函数,但现在我遇到了一个新错误:

错误 C2664:“uint Test::qHash(const Test &,uint)”:无法将参数 1 从“const int”转换为“const Test &”

我不能调用,qHash(key.a, seed)因为“对'const Test'类型的引用无法绑定到'const int'类型的左值

0 投票
3 回答
103 浏览

qt - QT 中是否有类似地图的工具可以在插入的索引上进行迭代?

从 Qt 文档中关于QMap::iterator

与以任意顺序存储项目的 QHash 不同,QMap 存储按 key 排序的项目。共享相同键的项目(因为它们是使用 QMap::insertMulti() 插入的,或者由于 unite() 插入)将连续出现,从最近插入的值到最近最少插入的值。

我想要的是通过插入的索引来插入地图。例如这张地图。

但问题是正如上面关于QMapand的文档所说的那样QHashmap。如果我想通过插入的索引迭代地图,它们将不起作用。

例如,首先ID,然后logging_id,然后calibration_id等等。所以我需要选择除QMapand之外的其他内容QHash

问题:

QT 中是否有类似地图的工具可以在插入的索引上进行迭代?

0 投票
1 回答
56 浏览

c++ - 如何使 unique_ptr 与 Qt 的 QHash 和 QString 一起工作?

我正在学习 unique_ptr 的本质。

我有一个包含 std:string 和 std::unique_ptr<std::string> 的 std::unordered_map 的工作示例。

但是我无法使用 Qt 的 QString 和 QHash 制作 unique_ptr 示例。他们不会编译提及错误,例如使用已删除功能

我怎样才能使最后两个例子起作用?

编辑 1

如果此信息相关,我使用gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

示例 1(工作):unordered_map 和字符串

unordered_map_string.h

unordered_map_string.cpp

主文件

CMakeLists.txt

示例 2(不工作):unordered_map 和 QString

unordered_map_qstring.h

unordered_map_qstring.cpp

主文件

CMakeLists.txt

编辑 2:例如 2 的编译错误

示例 3(不工作):QHash 和 QString

qhash_qstring.h

qhash_qstring.cpp

主文件

CMakeLists.txt

编辑 3:例如 3 的编译错误