2016-03-22 27 views
0

如何在C++ 11中默认初始化成员数组?看来我必须提供一个界限。对于数组成员C++的类默认初始值设定程序11

class Example { 
    const char* num2letter[10]{" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; 
}; 

编译好。但是,如果我忽略绑定,然后我得到一个编译器错误:

error: too many initializers for 'const char* [0]' const char* num2letter[]{" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};

为什么编译器不能推断绑定为通常它可以为本地数组定义使用集合初始化?

+0

的重复(HTTP ://stackoverflow.com/questions/29593207/what-is-the-reason-for-not-being-able-to-deduce-array-size-from-initializer-stri) –

回答

1

默认成员初始值设定项就是 - 默认值。它总是允许构造函数提供不同的值的可能性。 num2letter可能会从Example的构造函数之一初始化,此时甚至不会使用默认的初始化函数...因此该类型必须明确提供。声明必须在我们没有初始化程序的情况下有效。

这是你不能这样做同样的原因:?什么是不能够在成员变量初始化从字符串数组推断尺寸的原因]

class Example { 
    auto i = 4; 
};