【问题标题】:struct in union initialize联合初始化中的结构
【发布时间】:2018-08-04 20:02:15
【问题描述】:

目前,我在联合中有一个结构。例如,

Struct foo{
    Union u{
         Struct s1{
             int i1;
         } ss1;
         Struct s2{
             int i2;
         } ss2;
    } wrap;
};

所以当我想初始化联合时,我尝试这样做。

foo f = {};
f.u.ss1 = {
    .i1 = 0;
}

但错误显示与 operator = 不匹配(操作数类型和大括号括起来的初始值设定项列表)。

那么初始化的正确方法是什么?提前致谢。

【问题讨论】:

  • f.wrap.ss1.i1 = 0?一旦您修复了 other 错误以使其构建(例如 structunion 的大写字母)。
  • 发布真实代码 - 像 Struct 这样的东西不是 C++。
  • @Someprogrammerdude 对不起,我打错了,应该是 ss1。但是,在我的真实代码中,struct s1中有多个变量,所以单纯使用赋值是行不通的。
  • f.wrap.ss1 = {0}; 添加成员和对应的初始化器来品尝。

标签: c++ c++11 struct unions


【解决方案1】:

初始化应该是:

foo f;
f.wrap.ss1 = {0 /*, comma seperated values, */};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2022-08-15
    • 2011-07-01
    • 2017-09-17
    • 2014-08-05
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多