【问题标题】:QMap does not name a typeQMap 没有命名类型
【发布时间】:2018-12-12 20:59:45
【问题描述】:

我从 Qt Creator 开始,我正在映射一些键值对(AWG 线规尺寸作为键,直径作为值)。在使用 QMap 创建地图时,我收到“awg_map 未命名类型”的编译错误。谁能在这里指出我正确的方向?

根据http://doc.qt.io/qt-5/qmap.html 中的说明,我尝试了两种应该可行的方法来添加值。两种方式都会产生上述错误。

#include <QMap>

QMap<QString, float> awg_map;
awg_map["20"] = 0.812;
awg_map.insert("21", 0.723);

【问题讨论】:

  • 这四种方法都失败了(是的,我知道重复键,这些是单独尝试的。) awg_map["20"] = 0.812; awg_map.insert("21", 0.723); awg_map[QString::number("20")] = float(0.812); awg_map.insert(QString::number("21"), float(0.723));
  • 这里是编译输出错误:... 15:48:07:开始:“/usr/bin/make” g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../winder -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr /包括/qt4 -I。 -一世。 -I../绕线机 -I. -o mainwindow.o ../winder/mainwindow.cpp ../winder/mainwindow.cpp:9:1: 错误:'awg_map' 没有命名类型 awg_map[QString::number("20")] = float (0.812); ^ ../winder/mainwindow.cpp:10:1: 错误:'awg_map' 没有命名类型 awg_map.insert(QString::number("21"), float(0.723)); ^
  • 最后,不要将重要信息作为完整的错误消息放在 cmets 中,这应该在您的问题中。我建议您阅读How to Ask 并再次传递tour,以便您了解这是一个质量问题。
  • 您使用的是非常旧的 Qt 版本(Qt4?!),但这本身不应该是一个问题。您的 Qt 安装是否成功构建了 Creator 中可用的示例程序?无论如何,OP 中的代码是可以正常工作的。这是构建/环境问题而不是代码问题。
  • 如果显示的代码 sn-p 确实是完整的,那么它看起来不像是有效的 c++ 对我来说。 awg_map["20"] = 0.812;awg_map.insert("21", 0.723); 之类的语句在全局范围内无效,应该在函数体中(例如)。我的猜测是,对于awg_map["20"] = 0.812;,编译器正试图将其解析为元素类型为awg_map 和大小为"20" 的匿名数组——不管这意味着什么。对于使用非整数类型来指定数组大小(或类似类型),您是否没有收到任何错误/警告?

标签: qt qmap


【解决方案1】:

看起来像 G.M.这条评论是对的

awg_map["20"] = 0.812;等语句和 awg_map.insert("21", 0.723);在全局范围内无效,应该在函数体中(例如)。

我把它全部放到 MainWindow::MainWindow 中,它编译得很好。感谢这位GM!

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2023-04-07
    • 2021-02-03
    • 2017-04-01
    • 2015-06-09
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多