会员模板功能。为什么这个不能编译?

2024-01-11

我想在列表上迭代成员函数。在此代码示例中,我在 for 行中收到编译器错误:

预期的 ;在它之前,它没有声明,结束也没有声明。

为什么? 该函数甚至没有在代码中使用!

template <class T> bool Settings::saveSimpleList( QString k, const T & l ){
    //...
    for ( T::ConstIterator it = l.constBegin(), end =l.constEnd(); it != end; ++it )
    {
        QString itemValue = QVariant( *it ).toString();
        //...
    }

    return true;
}

我明白了,我在模板编程中遗漏了一些东西。 谢谢您的提示!


Do this:

for (typename T::ConstIterator it = l.constBegin(), end =l.constEnd(); it != end; ++it )
{
    QString itemValue = QVariant( *it ).toString();
    //...
}

写作时T::ConstIterator,编译器可以将其解释为“静态成员ConstIterator类型的T” 或 as “类型定义为ConstIterator通过 type 中的 typedefT".

如果您的意图是第二个,如下所示,您需要添加typename告诉编译器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

会员模板功能。为什么这个不能编译? 的相关文章