c++ - insert() 不适用于 QMap 变量
问题描述
在我的课堂上,我有一个属性
QMap<QString, QMap<QString, QString>> a;
在类的方法中,我这样做:
QString s;
QMap<QString, QString> m;
QMap<QString, QMap<QString, QString>> m2;
m.insert(s, s);
m2.insert(s,m);
a.insert(s,m);
问题:“m2”上的插入有效,而“a”上的插入给我一个编译错误。
为什么?m2 和 a 属于同一类型。
编译错误:
error: passing ‘const QMap<QString, QMap<QString, QString> >’ as ‘this’ argument discards qualifiers [-fpermissive]
529 | tqMap.insert(s,m);
| ^
----------------------------------------------------
/opt/Qt/5.13.0/gcc_64/include/QtCore/qmap.h:704: note: in call to ‘QMap<K, V>::iterator QMap<K, V>::insert(const Key&, const T&) [with Key = QString; T = QMap<QString, QString>]’
704 | Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey, const T &avalue)
| ^~~~~~~~~~~~
------------------------------------------------------
error: no matching member function for call to 'insert'
---------------------------------------------------------
/opt/Qt/5.13.0/gcc_64/include/QtCore/qmap.h:586: candidate function not viable: 'this' argument has type 'const QMap<QString, QMap<QString, QString> >', but method is not marked const
-----------------------------------------------------------
/opt/Qt/5.13.0/gcc_64/include/QtCore/qmap.h:587: candidate function not viable: requires 3 arguments, but 2 were provided
---------------------------------------------------------------
解决方案
推荐阅读
- python - 正则表达式向量
- selenium-webdriver - 使用 Selenium Python 处理窗口
- android - Android - 在使用带有导航组件的 CollapsingToolbar 时自定义处理导航
- iis - IIS 与任务管理器的内存消耗
- excel - 在 Excel 中修剪空格而不丢失格式
- aws-cdk - 如何将自定义 Lambda 层包含到管道堆栈中?(AWS-CDK)
- r - 了解 R 中 agrep 模糊匹配中的约束
- python - Tensorflow 给出“ValueError:检查输入时出错”
- javascript - React-Native 如何将我的 json 数据返回到我的道具?
- redis - Redis RPUSH - 特定的返回值语义