【问题标题】:how to write nested Initialiser list, eg a QVector of QPairs如何编写嵌套的 Initialiser 列表,例如 QPairs 的 QVector
【发布时间】:2017-05-04 02:45:04
【问题描述】:

警告:

qvector.h(509): 警告 C4127: 条件表达式是常数 (main.cpp) qvector.h(506) : 在编译类模板成员函数时 'QVector>::QVector(std::initializer_list)' 正在使用 [T=QPair] 编译

参见正在编译的函数模板实例化 'QVector>::QVector(std::initializer_list)' 的参考

我的代码:

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

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

/* 编辑 */

没有人知道警告是什么吗?它到底是什么意思?,其他人是否有警告?我在 QVectors 的初始化列表中查找了 QT 文档,但并没有说太多。没有人对函数模板实例化有什么普遍的看法吗?

【问题讨论】:

  • 您的粘贴中缺少分号吗?
  • 哈哈是的;)谢谢。认为在这种情况下编译器将难以构建

标签: c++ qt initializer-list qvector


【解决方案1】:

警告似乎是不可避免的,与我的初始化列表无关,更多与 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 类的枚举值,它是一个常量,因为它是一个枚举,耶!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多