2010-03-20 51 views
2

我想在我的QT應用嵌套QMAP QT

QMap<QString,QMap> 

使用此代碼但它說

C:/****/****/****/***/domparser.h:14: error: type/value mismatch at argument 2 in template parameter list for 'template<class Key, class T> class QMap' 

回答

6

QMAP是一個模板類構建的問題,所以你需要指定內QMAP的類型是這樣的:

QMap<String, QMap<QString, int> > myMap; 

注之間的'>的否則C++詞法分析器認爲其>>操作符的空間。

[編輯]

如果你打算嘗試一種通用QMAP存儲的值類型,而不是QMAP的具體實例,你的外在地圖中,你不能!

你不能像QMAP,​​因爲QMAP本身就不是一個類型,它是一個模板 - 它只是名稱時,模板參數指定

+0

「如果你打算嘗試存儲任何類型的QMAP作爲類型價值型......你不能」 - 這可以被理解爲‘無QMAP的實例可以作爲外QMAP’的值類型。我確信這不是你的意思,但是爲了避免疑惑:雖然「QMap 」無效,但可以使用QMap的*給定實例化*作爲值類型。 「QMap >」。 – 2010-03-22 08:00:04

+0

...和,如果外QMAP是一個模板內定義的,該模板的參數可被用於實例化所述內(值)QMAP。例如,如果外部QMap是'Foo '的成員,那麼它的完整類型可能是'QMap >' – 2010-03-22 08:03:34

+0

是的,我的壞... 我應該說它需要一個完整的可實例化(可解析?)類型作爲模板類型參數 – 2010-03-22 18:20:06