簡體   English   中英

如何在界面中使用 QMap

[英]How to use a QMap in an interface

我試圖在我的班級中使用 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++ 模板類?

我什么時候可以使用前向聲明?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM