2016-06-01 30 views
4

Ich habe entdeckt, erst vor kurzem die Existenz von Zeigern auf Klassendatenelement, zum Beispiel:C++ Bezug auf Klassendaten Mitglied

class Car 
{ 
    public: 
    int speed; 
}; 

int main() 
{ 
    int Car::*pSpeed = &Car::speed; 
    return 0; 
} 

Sie Bezug auf Datenklasse Mitglied existiert auch? Wenn ja, welches ist das Sintax, um sie zu erklären?

Antwort

3

Nein, es gibt keine Verweise auf Klassenmitglieder und auch keine Werte vom Typ "Klassenmitglied". Das einzige, was Sie haben können, ist ein Zeiger auf ein nicht-statisches Klassenmitglied (entweder zu einem Datenelement oder zu einer Elementfunktion).

Die std::is_member_pointer trait fasst diese schön: a pointer-to-Mitglied ist ein Typ T U::*, wo U ein Klassentyp ist und T ein Objekt ist oder Funktionstyp. (Wie immer gibt es keine Hinweise auf Referenzen.)