Wszystkie opisy, o których mogę znaleźć, mówią„wskaźnik do członka” w kontekście klasy. Związki są bardzo podobne do struktur, a zwłaszcza mają członków. Czy możesz też mieć wskaźnik do tych członków?
Na przykład.
union x {
int a;
float b;
};
int x::*p = &x::a;
Nie mówię o wskaźniku do związku jako całości, wskaźnikach jako członkach związku itp. p
w powyższym przykładzie byłoby naprawdę przesunięcie, oczywiście o rozmiarze 0. Potrzebowałbym tego konstruktu, aby odpowiedzieć to pytanie.
Odpowiedzi:
5 dla odpowiedzi № 1§3.9.2 / 1: Typy związków można konstruować w następujący sposób:… wskaźniki do niestatycznych elementów klasy 50, które identyfikują elementy danego typu w obiektach danej klasy,
§ 8.3.3 / 1: W deklaracji T D, gdzie D ma postać… oraz specyfikator zagnieżdżonej nazwy oznacza klasę…
§5.3.1 / 3: Wynik jednostkowy &
operator jest wskaźnikiem do jego operandu. Argumentem jest lvalue lub a kwalifikowany identyfikator. Jeśli operand to kwalifikowany identyfikator nazywanie elementu niestatycznego m
jakiejś klasy C
z typem T
, wynik ma typ „wskaźnik do elementu klasy C typu T” i jest oznaczeniem wartości C::m
.
I oczywiście § 9.5 / 5: A unia to klasa zdefiniowana za pomocą klucza klasy union
...
(§3.9.2 / 1 wspomina również: związki, które są klasami…)
Nie wspominając, że klasa nie może być unią, więc tak, możesz utworzyć taki typ i wartość PTM.