请教QMAP中使用结构体做key

flybird12 2017-09-03 09:46:21
//组信息结构
typedef struct GROUPPROP
{
int groupid; //组编号
QString desc; //组描述
int type; //组类型

bool operator< (const GROUPPROP& other) const
17 {
18 if (groupid < other.groupid) //类型按升序排序
19 {
20 return true;
21 }
22 else if (groupid == other.groupid) //如果类型相同,按比例尺升序排序
23 {
24 return type < other.type;
25 }
26
27 return false;
28 }

}uT_Property;


编译不通过,不知道哪里错了
...全文
841 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2017-09-05
  • 打赏
  • 举报
回复
首先,我的经验是,如果你用结构体定义方式,那么最好你的结构体中数据类型都是简单类型.否则还是用类定义方式比较合适.用结构体的简单类型最大的好处是,当你用于QMap的Key时,可以直接用结构体的二进制串.类似:QByteArray::fromRawData((char *)&myStruct, sizeof(myStruct)). 对于上边的定义,你把这里改成 bool operator< (const struct GROUPPROP& other) const
  • 打赏
  • 举报
回复
编译不通过的错误是啥?是不是这里有问题: bool operator< (const GROUPPROP& other) const 参数使用GROUPPROP,因为你下面声明的结果体名字是uT_Property,可以换成uT_Property或者struct GROUPPROP看看。其他看不出什么问题。QMap或者stl的map中作为key的自定义类型是要重载判断运算符,如<,>,>=等,此处没看出有问题。

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧