0

可能重复:
寻找一种重新初始化结构的简单方法

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

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

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

我怎样才能实现这样的目标?

4

2 回答 2

1

根据定义,您只能初始化一次实例。一旦一个对象被初始化,你所能做的就是改变它的状态。在您的示例中,假设您要更改对象的状态以inst使其数据成员保存 value 9,您可以分配给s对象的“i”数据成员:

inst.i = 9;

另一种选择是为您分配一个临时s实例。临时是用它的数据成员保存值构造的9

inst = s{9};
于 2012-10-14T10:34:16.607 回答
0

首先,您可以默认初始化您的对象,然后将其分配给成员:

s inst;
inst.i = 7;

虽然这不是技术上的初始化。如果你的结构有一个用户定义的构造函数,你可以用它来初始化你的成员。像这样

struct s
{
    s(int i) :i(i) {}
    int i;
};

s inst(7);

但是,如果您的结构是一个聚合(即没有用户定义的构造函数、虚函数、基或非公共非静态数据成员),您可以用大括号初始化它的成员。在你的情况下s是一个聚合结构。

s inst = {7};

要阅读聚合的完整定义及其用法,请参阅我的这个常见问题解答

于 2012-10-14T10:37:52.343 回答