c++ - 为什么编译器不能像在变量声明中那样在结构成员中设置 char[] = { .. } 的大小?

标签 c++ c++11 struct initialization

<分区>

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

error: array bound cannot be deduced from an in-class initializer

代码:

struct A
{
    char s[]   = { 'F', 'O', 'O', ... };
};

最佳答案

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

例如

struct test
{
    int var;
};

struct test struct_object = { 7 };

关于c++ - 为什么编译器不能像在变量声明中那样在结构成员中设置 char[] = { .. } 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509876/

相关文章:

python - 使用以下命令从二进制数据字符串中提取日期和时间

c++ - 在其构造函数中将对象的指针传递给另一个类

c++ - 访问另一个类的数据,该类的对象作为构造函数中的参数发送

c++ - 枚举 unique_ptr vector 的编译错误

c++ - 避免 dynamic_cast 的模式

ios - 在 Swift 4 上解码 JSON 数据返回 nil

c - 使用存储在其结构中的变量访问数组元素

c++ - CodeBlocks C++ 输出文件

c++ - 如何使用 gdb 调试插件

C++11 std::condition_variable:我们可以将锁直接传递给通知线程吗?