初始化struct值

时间:2012-10-14 10:32:45

标签: c++ struct initialization

  

可能重复:
  Looking for an easy way to reinitialize a struct

我实际上并不知道我的问题是什么,所以我没有太多运气寻找解决方案。

我想将结构初始化为现有变量。

struct s { int i; };
s inst = { 7 }; // valid
inst = { 9 }; // invalid

我怎样才能达到这样的目标?

2 个答案:

答案 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