2017-03-13 9 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)