我可以在初始化 struct Foo 时执行此操作:
Foo foo = {bunch, of, things, initialized};
但是,我不能这样做:
Foo foo;
foo = {bunch, of, things, initialized};
所以,两个问题:
- 为什么我不能做后者,前者只是初始化的特殊构造函数吗?
- 我怎样才能做类似于第二个例子的事情,即在它已经被初始化之后,在一行代码中为一个结构声明一堆变量?我试图避免对具有许多变量的大型结构执行此操作:
Foo foo;
foo.a = 1;
foo.b = 2;
foo.c = 3;
//... ad infinitum
原文由 jim 发布,翻译遵循 CC BY-SA 4.0 许可协议
第一个是聚合初始值设定项 - 您可以在此解决方案中阅读这些和标记的初始值设定项:
什么是标记结构初始化语法?
这是一种特殊的初始化语法,在初始化结构后你不能做类似的事情。您可以做的是提供一个成员(或非成员)函数,将您的一系列值作为参数,然后在成员函数中分配 - 这将允许您在以同样的方式初始化结构后完成此操作简洁(当然是在你第一次编写函数之后!)