2010-03-20 6 views
2

Je suis en train d'utiliser ce code dans mon application QTQMap nichée dans qt

QMap<QString,QMap> 

mais il y a un problème de construction, il dit

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

Répondre

6

QMap est une classe de modèle, de sorte que vous devez préciser le type de l'QMap intérieur comme celui-ci:

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

Notez l'espace entre le « > » s sinon le C++ lexer pense que son opérateur >>.

[édité]

Si vous aviez l'intention d'essayer de stocker un QMap générique comme type de valeur, plutôt que d'un exemple concret de QMap, au sein de votre carte externe, vous ne pouvez pas!

Vous ne pouvez pas avoir quelque chose comme QMap, parce que QMap lui-même est pas un type, son modèle - il que les noms d'un type lorsque les paramètres du modèle sont spécifiés

+0

« Si vous aviez l'intention d'essayer de stocker tout type de QMap comme le type de valeur ... vous ne pouvez pas "- ceci pourrait être interprété comme signifiant" aucune instanciation de QMap ne peut être utilisée comme type de valeur d'un QMap externe ". Je suis sûr que ce n'est pas ce que vous vouliez dire, mais pour éviter tout doute: alors que "QMap " n'est pas valide, il est possible d'utiliser une * instanciation donnée * de QMap comme type de valeur, par ex. "QMap >". –

+0

... et, si la QMap externe est définie dans un modèle, les paramètres de ce modèle pourraient être utilisés pour instancier la QMap interne (valeur). Par exemple, si le QMap externe est un membre de 'Foo ' alors son type complet pourrait être 'QMap >' –

+0

Oui, mon mauvais ... J'aurais dû dire que il avait besoin d'un type complet instanciable (résolvable?) en tant que paramètres de type de modèle –