gpt4 book ai didi

c++ - 成员(member)模板功能。为什么不编译?

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:05 24 4
gpt4 key购买 nike

我想在一个列表的成员函数中迭代。在此代码示例中,我在 for-line 中遇到编译器错误:

Expected ; before it, it not declared, end not declared.

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

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;
}

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

最佳答案

这样做:

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

编写 T::ConstIterator 时,编译器可以将其解释为“T 类型的静态成员 ConstIterator”或“T 类型中的 typedef 定义为 ConstIterator 的类型。

如果你的意图是第二种,就像这里一样,你需要添加typename来告诉编译器。

关于c++ - 成员(member)模板功能。为什么不编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com