【发布时间】:2020-10-02 14:15:29
【问题描述】:
我有一个带有自定义类作为键的 QMap,但是当我尝试插入具有不同键的元素时,有时地图会替换另一个元素。 就我而言,问题是这样的:
#include <QCoreApplication>
#include <QMap>
#include <QDebug>
class A
{
public:
A(int value, const QString& string) { m_value = value; m_string = string; }
bool operator<(const A& other) const { return m_value < other.m_value && m_string < other.m_string; }
private:
int m_value;
QString m_string;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<A, QString> map;
map.insert(A(10, "ONE"), "FIRST");
map.insert(A(10, "TWO"), "SECOND");
map.insert(A(20, "THREE"), "THIRD");
return 0;
}
如果您运行此代码,您会注意到“FIRST”元素和“SECOND”被混淆了。 地图结果是这样的:
我做错了吗?
【问题讨论】:
-
您是否尝试向您的班级添加赋值运算符?
-
我尝试添加赋值和相等运算符,但 QMap 使用运算符