为什么我不能像使用 std::string::size_type 那样使用 QList::size_type?(模板参数错误)
Why can't I use QList::size_type as I would std::string::size_type? (template parameter error)
在我的 for 循环中声明迭代器时研究无符号与有符号整数比较警告时,我读到以下内容:
尽可能使用您要比较的确切类型(例如,在与
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
,我想使用它;但我阅读了上面链接的帖子,这让我不确定。
QList
是一个类模板,这意味着你应该在使用时指定模板参数,例如 QList<int>
和QList<int>::size_type
.
顺便说一句:std::string
是 std::basic_string 的实例化,它是一个定义为 std::basic_string<char>
的 typedef。所以std::string::size_type
实际上等同于std::basic_string<char>::size_type
。
你不能以相同的方式使用它,因为它们不是一回事。 std::string
实际上是std::basic_string<char>
的别名,这就是为什么您在使用它时不必指定模板类型的原因。
由于Qlist
不是别名,而是您必须使用的模板类型
QList<some_type>::size_type
您可以做的一件事是制作自己的别名,例如
using QIntList = QList<int>;
然后你就可以说
QIntList::size_type
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 大于65535的C++数组[size]引发不一致的溢出
- 为什么(-1)%vector::size()总是返回0
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- 调用 list.size() 方法给出错误"expression must have class type"
- vtkTypeTraits.h 错误:"Type long is not 4 or 8 bytes in size."
- C++/ASM - "Operand size conflict" , "Improper operand type"
- 提升精神语法错误 - "no type named ‘size’ in ‘struct boost::spirit::unused_type’"
- 如何在 c++11 中使用容器 std::array<type, size> 用于多维数组?
- OpenCV 错误:断言失败 (src1.size == dst.size && dst.type() == CV_8U) in cvInRangeS
- "error: request for member ‘size’ in ‘a’, which is of pointer type"但我不认为这是一个指针
- new(size, value) Type[0]返回的指针是否合法,是否可以用来构建数组?