如何在C++11中默认初始化成员数组?看来我必须提供一个约束。
class Example {
const char* num2letter[10]{" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
};
编译良好。但如果我省略了绑定,那么我会得到一个编译器错误:
错误:"const char*[0]"的初始值设定项过多const char*num2letter[]{",","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
为什么编译器不能像正常情况下那样使用聚合初始化来推断本地数组定义的绑定?
默认成员初始值设定项就是默认值。它总是允许构造函数提供不同值的可能性。num2letter
可能是从Example
的构造函数之一初始化的,此时甚至不会使用默认的初始化器。。。因此必须显式地提供该类型。声明必须在不带初始值设定项的情况下对我们有效。
这和你不能做类似的事情的原因是一样的:
class Example {
auto i = 4;
};