C++14 结构统一初始化

标签 c++ c++11 visual-c++ c++14 uniform-initialization

我有以下相当简单的代码:

    WNDCLASSEX windowClass = {0};

    windowClass.cbSize { sizeof(WNDCLASSEX) };

我想知道为什么上面的代码不起作用而下面的代码起作用:

    WNDCLASSEX windowClass = {0};

    windowClass.cbSize = { sizeof(WNDCLASSEX) };

Visual Studio 15 2017 给我这两个错误:

1: expected a ';'

2: error C2064: term does not evaluate to a function taking 1 arguments

最佳答案

您不能多次初始化同一个变量 (windowClass),也不能在单独的初始化语句中初始化成员变量。

在你的例子中,因为 cbSize 是第一项

WNDCLASSEX windowsClass { sizeof(WNDCLASSEX) };

这会将 cbSize 设置为 sizeof(WNDCLASSEX) 并将结构的其余部分设置为 0。

关于C++14 结构统一初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45122916/

相关文章:

visual-studio - 查看 cl.exe 响应文件

c++ - CMake OpenCV 无法指定链接库

c++ - 基本运算符具有非指针类型

c++ - 为什么默认移动构造函数需要 unique_ptr 中使用的类的默认删除器?

c++ - grpc & protobuf -- 错误:std::result_of<> 中没有名为 'type' 的类型

c++ - 如何在单例类中管理变量状态?

c++ - 模板难题

c++ - 在 MFC 应用程序内部使用时 TBB 内存泄漏

c++ - 相同的代码, vector 更改为 unordered_set 时出错

c++ - 将字符串转换为 char 并检查字母