/ / Czy możesz mieć „wskaźnik do członka” do członka związku? - c ++

Czy możesz mieć "wskaźnik do członka" członka związku? - c ++

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.