QMap<int,QString>::size”: 非标准语法;请使用 "&" 来创建指向成员的指针
时间: 2024-03-09 11:50:46 浏览: 30
编译器提示这个错误的原因是,你在访问 QMap 对象中的 size() 方法时,使用了非标准语法。正确的语法是使用 "&" 符号来创建指向成员的指针。具体实现方法如下:
```cpp
#include <QMap>
#include <QString>
int main() {
// 创建 QMap 对象
QMap<int, QString> map;
// 插入元素
map.insert(1, "apple");
map.insert(2, "banana");
map.insert(3, "orange");
// 访问元素
QString fruit = map.value(1); // fruit 的值为 "apple"
// 输出 QMap 大小
qDebug() << "QMap size: " << &QMap<int, QString>::size;
return 0;
}
```
在上述代码中,我们创建了一个 QMap 对象,并使用 insert() 方法向其中插入三个元素。我们可以使用 value() 方法来访问某个键对应的值。在输出 QMap 大小时,我们使用了 & 符号来创建指向 QMap 类中 size() 方法的指针,并将其传递给 qDebug() 函数输出。这样就可以避免编译器提示的非标准语法错误了。
相关问题
上面的代码,编译器提示QMap<int,QString>::size”: 非标准语法;请使用 "&" 来创建指向成员的指针
抱歉,之前我的回答有误。在你的代码中,编译器提示是因为你没有使用 & 符号来创建指向 QMap 中 size() 方法的指针。正确的实现方法为:
```cpp
#include <QMap>
#include <QString>
int main() {
// 创建 QMap 对象
QMap<int, QString> map;
// 插入元素
map.insert(1, "apple");
map.insert(2, "banana");
map.insert(3, "orange");
// 访问 QMap 大小
int (QMap<int, QString>::*sizePtr)() const = &QMap<int, QString>::size;
int size = (map.*sizePtr)();
qDebug() << "QMap size: " << size;
return 0;
}
```
在上述代码中,我们首先创建了一个 QMap 对象,并使用 insert() 方法向其中插入三个元素。为了访问 QMap 中的 size() 方法,我们使用 & 符号创建了一个指向该方法的指针,并将其赋值给了 sizePtr 变量。接着,我们使用 .* 运算符来调用 size() 方法,并将其返回值赋值给了 size 变量。最后,我们将 QMap 的大小输出到控制台上。这样就可以避免编译器提示的非标准语法错误了。
QMap<int, QList<QString>>
QMap<int, QList<QString>>是Qt框架中的一种数据结构,它是一个基于键值对(key-value)的模板类,其中key是int类型,value是QList<QString>类型。QMap在使用时类似于一个关联数组,可以通过key来查找对应的value值。而QList<QString>则是一个QString类型的列表,它可以存储多个字符串元素。因此,QMap<int, QList<QString>>可以理解为一个以整数为键,以字符串列表为值的映射表。
举个例子,假设我们有一个QMap<int, QList<QString>>,其中key表示班级编号,value表示该班级中的学生名单。我们可以通过班级编号来查找对应的学生名单,而学生名单则是一个包含多个学生姓名的QString列表。
下面是一些可能有用的相关问题: