你可以向工会成员提供“成员指针”吗?

时间:2013-01-17 09:35:10

标签: c++

我可以找到的所有描述都在类的上下文中讨论“指向成员的指针”。工会与结构非常相似,特别是也有成员。你能指点那些成员吗?

E.g。

union x {
    int a;
    float b;
};
int x::*p = &x::a;

我不是在谈论整个联盟的指针,作为联盟成员的指针等等。上面例子中的p实际上是一个偏移量,显然是大小为0.我需要这个结构回答this question

1 个答案:

答案 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类型和值。