如何在接口中使用QMAP

How to use a QMap in an interface

本文关键字:QMAP 接口      更新时间:2023-10-16

我正在尝试在我的班级中使用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而不是标题!短类原型只能用于指针,用于对象和您必须包括完整类声明的标题!

您必须包括QMAP的标题:

#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)

wohlstand的答案不准确,您可以转发声明模板类。使用QMAP,您会这样做:

 template <class Key, class T> class QMap;

如果您喜欢当然

template <class Key, class T> 
class QMap;

检查这些答案以获取有关此

的更多信息

如何转发声明C 模板类?

我什么时候可以使用前向声明?