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