可能重复:
寻找一种重新初始化结构的简单方法
我实际上不知道我的问题叫什么,所以我没有太多运气来寻找解决方案。
我想将结构初始化为现有变量。
struct s { int i; };
s inst = { 7 }; // valid
inst = { 9 }; // invalid
我怎样才能实现这样的目标?
可能重复:
寻找一种重新初始化结构的简单方法
我实际上不知道我的问题叫什么,所以我没有太多运气来寻找解决方案。
我想将结构初始化为现有变量。
struct s { int i; };
s inst = { 7 }; // valid
inst = { 9 }; // invalid
我怎样才能实现这样的目标?
根据定义,您只能初始化一次实例。一旦一个对象被初始化,你所能做的就是改变它的状态。在您的示例中,假设您要更改对象的状态以inst
使其数据成员保存 value 9
,您可以分配给s
对象的“i”数据成员:
inst.i = 9;
另一种选择是为您分配一个临时s
实例。临时是用它的数据成员保存值构造的9
:
inst = s{9};
首先,您可以默认初始化您的对象,然后将其分配给成员:
s inst;
inst.i = 7;
虽然这不是技术上的初始化。如果你的结构有一个用户定义的构造函数,你可以用它来初始化你的成员。像这样
struct s
{
s(int i) :i(i) {}
int i;
};
s inst(7);
但是,如果您的结构是一个聚合(即没有用户定义的构造函数、虚函数、基或非公共非静态数据成员),您可以用大括号初始化它的成员。在你的情况下s
是一个聚合结构。
s inst = {7};
要阅读聚合的完整定义及其用法,请参阅我的这个常见问题解答