c++ - 如何在界面中使用 QMap

标签 c++ qt qmap

我想在类里面使用 QMap,但出现错误:

/* path */.h:18: error: template argument required for ‘class QMap’
 class QMap;
       ^~~~

实现

class QMap;

class MappingInterface
{

public:
    virtual ~MappingInterface() {}

    virtual QMap<QString, QString> itemsMap() const = 0;
};

#define MappingInterface_iid "com.myapp.MappingInterface"

    Q_DECLARE_INTERFACE(MappingInterface, MappingInterface_iid)

如何在类中使用 QMap?

提前谢谢你。

最佳答案

QMap 是一个模板,您不能只键入 class QMap 而不是标题! 短类原型(prototype)只能用于指针,对于对象和引用,您必须包含完整类声明的 header !

您必须包含 QMap 的 header :

#include <QMap>
#include <QString>

class MappingInterface
{
public:
    virtual ~MappingInterface() {}
    virtual QMap<QString, QString> itemsMap() const = 0;
};

#define MappingInterface_iid "com.myapp.MappingInterface"

Q_DECLARE_INTERFACE(MappingInterface, MappingInterface_iid)

关于c++ - 如何在界面中使用 QMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42768133/

相关文章:

c++ - 如何在 Qt 中使用 java 风格的迭代器而不是 STL 风格的迭代器?

c++ - 为什么纯虚拟析构函数需要实现

C++:在模板别名中使用 static_assert

c++ - fork 进程和客户端之间断开连接

C++ std::vector 插入两个元素替代算法失败

qt - 在 QPlainTextEdit 中禁用 'Return' 键

linux - i.MX6 上的 Qt 5.3.2 使用 Yocto : problems with QML WebView

c++ - Qt 中的 const char* 错误行为

c++ - 在信号槽机制与传统循环之间做出决定

c++ - qt c++中反序列化 map 的大小增加