【发布时间】:2017-11-25 21:02:46
【问题描述】:
在我的 for 循环中声明迭代器时研究无符号与有符号整数比较警告时,I read this:
尽可能使用您要比较的确切类型(例如,在与
std::string的长度进行比较时使用std::string::size_type)。
我有一个QList<T>我想迭代,使用上面的方法声明迭代器:
for(QList::size_type i = 0; i < uploads.size(); i++)
{
//Do something
}
它给了我一个编译器错误:
error: 'template<class T> class QList' used without template parameters
for(QList::size_type i = 0; i < uploads.size(); i++)
为什么我不能以同样的方式使用它?这是由我还是由 Qt 框架及其类型引起的?在这种情况下,QList::size_type 有什么好的替代品,QList::size() 只是返回一个普通的旧int,我想使用它;但我阅读了上面链接的帖子,这让我不确定。
【问题讨论】:
-
或者,你有什么改变使用
auto吗? -
@appleapple 如何在这里使用
auto?auto i = 0好像错了。 -
@songyuanyao 对不起,你是对的。可能是基于
for(auto& x : uploads)的范围? -
@appleapple 对于
auto i = 0;,i的类型将为int;这不是 OP 想要的确切类型。 -
致 OP:也许您可以改用
begin()和end()。或decltype.
标签: c++ qt templates class-template dependent-name