使用默认值初始化结构很简单:
struct X { int a; int b = 2; };
使用大括号初始化器初始化结构也很简单:
X x = {1, 3};
令人惊讶的是,在我删除默认值之前,初始化代码不会编译。那么,在这种情况下我将如何进行初始化呢?我想保留 X 一个没有 c-tor 的 POD。
最佳答案
这里是一些与问题相关的文档:
http://en.cppreference.com/w/cpp/language/aggregate_initialization
在 C++11 中,添加默认初始化会阻止大括号初始化有效。在 C++14 中,它没有。
在 C++11 中解决问题的一种方法是编写一个构造函数,其值为 a,b 值为默认值。
关于c++ - 具有默认值的结构的大括号(聚合)初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344444/