我想在列表上迭代成员函数。在此代码示例中,我在 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(使用前将#替换为@)