我有以下相当简单的代码:
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/