c++ - 如何编写嵌套的 Initialiser 列表,例如 QPairs 的 QVector

标签 c++ qt initializer-list qvector

警告:

qvector.h(509): warning C4127: conditional expression is constant (main.cpp) qvector.h(506) : while compiling class template member function 'QVector>::QVector(std::initializer_list)' being compiled with [T=QPair]

see reference to function template instantiation 'QVector>::QVector(std::initializer_list)' being compiled

我的代码:

QVector< QPair< double, float> > container(
        {{40, 0.0f},
         {70, 0.95f},
         {80, 0.7f}}
);

构建良好,我只是希望警告消失(不更改警告级别)。我做错了什么?

/* 编辑 */

没有人对警告是什么有任何意见吗?究竟是什么意思?其他人是否有警告?我查阅了有关 QVectors 初始化列表的 QT 文档,但它并没有说太多。没有人对函数模板实例化有什么要说的吗?

最佳答案

这个警告似乎是不可避免的,而且与我的初始化列表关系不大,而与 qvector 关系更大。 Qvector 检查的任何构造函数

  if (QTypeInfo<T>::isComplex)

这是一个简单的枚举值,在下面列出的类名声明的语法中有几个没有模板、模板 * 或模板的类。很乐意向我解释一下!

template <typename T>
class QTypeInfo { enumbla;}

template<>
class QTypeInfo<void> { enumbla;}

template <typename T>
class QTypeInfo<T*> { enumbla;}

所以 if 查找适当 QTypeInfo 类的枚举值,它是一个常量,因为它是一个枚举耶!

耶,不可避免的警告,还有更多要抑制的东西!

关于c++ - 如何编写嵌套的 Initialiser 列表,例如 QPairs 的 QVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772997/

相关文章:

c++ - C/C++嵌入python模块PIL,python函数想要返回所有像素数据,但我为什么不能?

c++ - Qt 可执行错误 : 0xc0000139 trying to merge c++ in qt application

C++11 从初始化列表到数组参数的隐式转换

c++ - 基于范围的大括号初始化器而不是非常量值?

c++ - 在 C++ 中旋转数组的最后 n 个元素

c# - IShellItem 的 GUID

素数搜索中的 C++ 数组

c++ - 从 QGraphicsSimpleTextItem foreach 循环获取字符串?

c++ - Codeblocks 和 Qt——如何使用它们?

C++组合和初始化