为什么编译器不能在结构成员中设置char [] = {..}的大小,就像它对变量声明一样?

The*_*ask 11 c++ struct initialization c++11

我在结构中使用struct初始值,如下例所示.我无法理解的是为什么编译器不能char[] = { .. }像在变量声明中那样设置struct成员的大小?Clang ++给出以下错误:

错误:无法从类内初始化程序中推导出数组绑定

码:

struct A
{
    char s[]   = { 'F', 'O', 'O', ... };
};
Run Code Online (Sandbox Code Playgroud)

Sor*_*rer 0

结构元素在创建时无法初始化,因为结构定义了类型而不是可以初始化的变量。只能在创建结构体对象后初始化结构体变量

例如

struct test
{
    int var;
};

struct test struct_object = { 7 };
Run Code Online (Sandbox Code Playgroud)

  • 这对于 C++98 和 C++03 是正确的,但对于 C++11 则不正确。您_可以_初始化结构中的变量。这相当于让它出现在构造函数的初始值设定项列表中。该问题没有明确指出“C++11”,而是通过“就像变量一样”的措辞来假设它。 (6认同)