使用默认值初始化结构很简单:
struct X { int a; int b = 2; };
并使用大括号初始化程序初始化结构也很简单:
X x = {1, 3};
令人惊讶的是,init代码不会编译,直到我删除默认值。那么,在这种情况下我怎么做init呢?我想在不使用电脑的情况下保持X POD。
答案 0 :(得分:22)
以下是与此问题相关的一些文档:
http://en.cppreference.com/w/cpp/language/aggregate_initialization
在C ++ 11中添加默认初始化会阻止braced init生效。在C ++ 14中,它没有。
在C ++ 11中解决问题的一种方法是编写一个构造函数,其值为a,b值为默认值。