2017-03-13 27 views
0

で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を使用しますか?

ありがとうございます。

+0

をなぜ 'クラスQMap'の前方宣言? –

+4

エラーはかなり明確です:*クラス* 'QMap'はなく、クラス*テンプレート*だけです。 –

+1

QMapはクラスの外でどのように使用しますか? – user463035818

答えて

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) 
関連する問題