【发布时间】: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"的匿名数组——不管这意味着什么。对于使用非整数类型来指定数组大小(或类似类型),您是否没有收到任何错误/警告?