2010-03-20 224 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