【问题标题】:Initialize Any Union Member (designated initializer)初始化任何联合成员(指定初始化器)
【发布时间】:2020-08-10 13:06:33
【问题描述】:

当声明一个联合时,例如

union u
{
  int x;
  float y;
};

您可以按如下方式构造联合:

u integer { .x = 10 };
u fraction { .y = 10.f };

假设我有一个指向成员的指针,

auto union_member_pointer = &u::y;

什么语法允许我抽象地分配给工会的那个成员?即

u unknown { .*union_member_pointer = { } }; // doesn't work

【问题讨论】:

    标签: c++ c++20


    【解决方案1】:

    指定的初始化不允许是动态的。它应用于成员的名称,而不是成员指针或类似的名称。

    【讨论】:

    • 然后将union_member_pointer 视为constexpr,这是我的用例。我现在能做什么?
    • @nowi:没什么。如前所述,您必须使用名称;成员指针不是名称。
    • 那太臭了。看起来我会坚持使用成员指针在构造函数的主体中正常分配它来维护我的抽象。
    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多