Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化任何联合成员(指定的初始值设定项)_C++_C++20 - Fatal编程技术网

C++ 初始化任何联合成员(指定的初始值设定项)

C++ 初始化任何联合成员(指定的初始值设定项),c++,c++20,C++,C++20,当宣布联盟时,例如 union u { int x; float y; }; 可以按如下方式构造联合体: u integer { .x = 10 }; u fraction { .y = 10.f }; 假设我有一个指向成员的指针 auto union_member_pointer = &u::y; 什么语法允许我抽象地分配给工会的那个成员?i、 e u unknown { .*union_member_pointer = { } }; // doesn't work 指

当宣布联盟时,例如

union u
{
  int x;
  float y;
};
可以按如下方式构造联合体:

u integer { .x = 10 };
u fraction { .y = 10.f };
假设我有一个指向成员的指针

auto union_member_pointer = &u::y;
什么语法允许我抽象地分配给工会的那个成员?i、 e

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

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

然后将
union\u member\u pointer
视为
constexpr
,这在我的用例中。我现在能做什么?@nowi:没什么。如上所述,您必须使用名称;成员指针不是名称。这太糟糕了。看起来我将坚持在构造函数的主体中使用成员指针来维护抽象,并正常分配它。