如何在界面中使用QMap

时间:2017-03-13 16:00:57

标签: 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?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

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)

答案 1 :(得分:0)

Wohlstand 的回答不准确,可以转发声明模板类。 使用 QMap,您可以这样做:

 template <class Key, class T> class QMap;

如果你愿意,当然可以缩进一点

template <class Key, class T> 
class QMap;

检查这些答案以获取更多信息

How to call an api from another api in expressjs?

How to forward declare a C++ template class?