【问题标题】:nested QMap in qtqt中的嵌套QMap
【发布时间】:2010-03-20 12:12:35
【问题描述】:

我正在尝试在我的 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'

【问题讨论】:

    标签: qt qmap


    【解决方案1】:

    QMap 是一个模板类,所以你需要像这样指定内部 QMap 的类型:

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

    注意 '> 之间的空格,否则 C++ 词法分析器认为它是 >> 运算符。

    [编辑]

    如果您打算尝试在外部映射中存储通用 QMap 作为值类型,而不是 QMap 的具体实例,则不能!

    你不能拥有像 QMap 这样的东西,因为 QMap 本身不是一个类型,它是一个模板——它只在指定模板参数时命名一个类型

    【讨论】:

    • “如果您打算尝试将任何类型的 QMap 存储为值类型......您不能” - 这可以理解为“没有 QMap 的实例化可以用作值外部 QMap 的类型”。我确定这不是您的意思,但为免生疑问:虽然 "QMap" 无效,但可以使用 QMap 的 给定实例化 作为值类型,例如"QMap>".
    • ...并且,如果在模板中定义了外部 QMap,则可以使用该模板的参数来实例化内部(值)QMap。例如,如果外部 QMap 是 Foo&lt;X,Y&gt; 的成员,那么它的完整类型可能是 QMap&lt;QString, QMap&lt;typename X, typename Y&gt; &gt;
    • 是的,我的错……我应该说它需要一个完整的可实例化(可解析?)类型作为模板类型参数
    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多