我可以找到的所有描述都在类的上下文中讨论"指向成员的指针".工会与结构非常相似,特别是也有成员.你能指点那些成员吗?
例如
union x {
int a;
float b;
};
int x::*p = &x::a;
Run Code Online (Sandbox Code Playgroud)
我不是在谈论整个联盟的指针,作为联盟成员的指针等p在上面的例子中实际上是一个偏移,显然是大小0.我需要这个结构来回答这个问题.
§3.9.2/ 1:复合类型可以通过以下方式构造:...指向非静态50类成员的指针,它们在给定类的对象中标识给定类型的成员,
§8.3.3/ 1:在一个声明TD中,其中D具有形式......并且嵌套名称说明符表示一个类,......
§5.3.1/ 3:一元运算&符的结果是指向其操作数的指针.操作数应为左值或限定ID.如果操作数是一个qualified-idm,C用类型命名某个类的非静态成员T,则结果的类型为"指向类型为C的C类成员的指针",并且是一个prvalue指定C::m.
当然§9.5/ 5:联合是一个用类密钥定义的类union......
(§3.9.2/ 1也提到:工会,这是班级......)
没有提到该类不能成为一个联合,所以是的,你可以形成这样的PTM类型和值.