我实际上并不知道我的问题是什么,所以我没有太多运气寻找解决方案。
我想将结构初始化为现有变量。
struct s { int i; };
s inst = { 7 }; // valid
inst = { 9 }; // invalid
我怎样才能达到这样的目标?
答案 0 :(得分:2)
根据定义,您只能初始化一次实例。初始化对象后,您所能做的就是更改其状态。在您的示例中,假设您要更改对象inst
的状态,使其数据成员保持值9
,您可以指定s
的'i'数据成员对象:
inst.i = 9;
另一种选择是为您分配一个临时s
实例。临时构造的数据成员保持值9
:
inst = s{9};
答案 1 :(得分:0)
首先,您可以默认初始化您的对象,然后分配给该成员:
s inst;
inst.i = 7;
但这不是技术上的初始化。如果您的struct具有用户定义的构造函数,则可以使用它来初始化您的成员。就这样
struct s
{
s(int i) :i(i) {}
int i;
};
s inst(7);
但是,如果您的结构是聚合(即没有用户定义的构造函数,虚函数,基数或非公共非静态数据成员),则可以使用大括号初始化其成员。在您的情况下,s
是一个聚合结构。
s inst = {7};
要阅读聚合及其用法的完整定义,see this FAQ of mine