Hallo,
kann mir jemand kurz erklären, wozu man folgende Operatoren
braucht: .* und ->*
Danke im Voraus.
Gruß Patrick
Hallo,
kann mir jemand kurz erklären, wozu man folgende Operatoren
braucht: .* und ->*
Danke im Voraus.
Gruß Patrick
kann mir jemand kurz erklären, wozu man folgende Operatoren
braucht: .* und ->*
Mit . kannst du einen Member einer Klasse oder einer Struktur ansprechen, mit -> machst du es, wenn du einen Pointer hast. Also z. B. Klasse Data, Methode getData():
Data* pdX;
Data dX;
pdX->getData();
dX->getData();
Grüße, Robert
PS: Falls du mit dem * nicht was beliebiges sondern den konkret „*“ gemeint hast, dann sorry die unnötige Antwort, keine Ahnung.
Data* pdX;
Data dX;
pdX->getData();
dX->getData();
was natürlich dX.getData() heissen müsste, aber das hast du natürlich gemeint, is klar.
Bruno
was natürlich dX.getData() heissen müsste, aber das hast du
natürlich gemeint, is klar.
Ups klar, jaja, Copy&:stuck_out_tongue_winking_eye:aste und so.
Aber heute ist Montag, da scheitert man sowieso schon am Einfachsten. :o)
Grüße, Robert
Hallo Robert und Bruno,
danke für eure Antworten, aber ich meinte nicht . und -> ,
die kenne ich.
Sondern .* und ->* die Sternchen gehören dazu !
Gruß Patrick
Was für ne Sprache soll das überhaupt sein?
Hast du ein Stück Code zur Hand was das mal im Kontext zeigt wie die Operatoren eingesetzt werden?
Bruno
Hallo Bruno,
>>Was für ne Sprache soll das überhaupt sein?
es sind Operatoren von C++.
Beispiel habe ich keines, da ich die Operatoren nur in einer
Tabelle gesehen habe.
Gruß Patrick
>>Was für ne Sprache soll das überhaupt sein?
es sind Operatoren von C++.
Beispiel habe ich keines, da ich die Operatoren nur in einer
Tabelle gesehen habe.
Vielleicht soll es auch nur heissen, dass nach dem . oder dem -> noch irgendwas anderes kommt (der Funktionsname)
Mir sind diese „Operatoren“ auf jeden Fall noch nie begegnet.
Bruno
Hi Patrick ))
Eigentlich ergibt sich die Bedeutung dieser beiden Operatoren von alleine. Ich halte es auch für schlecht, dass sie als eigene Operatoren bezeichnet werden. Also, links von diesen Operatoren steht ein Objekt einer Klasse/Struktur, und rechts davon steht ein Zeiger auf ein Member dieser Klasse/Struktur.
//Eine Klassen-Deklaration:
class CKlasse {
int iBla;
int MachWas(int); };
//Ein Objekt anlegen:
CKlasse Objekt;
//Einen Zeiger auf ein Klassenobjekt definieren:
CKlasse \*pObjekt;
//Einen Zeiger auf die Member-Funktion der Klasse definieren:
CKlasse::int(\*)(int) pMemberFunc;
//Die beiden Zeiger initialisieren
pObekt= &Objekt;
pMemberFunc= CKlasse::&MachWas;
//Jetzt kannst du die Member-Funktion wie folgt aufrufen,
//der Wert 1 wird als Funktionsparameter übergeben:
(pObjekt-\>\*pMemberFunc)(1)
Das gabs auch schon in C. In C++ kann aber auf der rechten Seite ein Zeiger auf eine Funktion auftauchen, was in C nicht möglich ist (weil Strukturen dort keine Funktionen enthalten).
Es ist aber kein Wunder, dass du dies nicht wußtest, denn wer braucht das schon?
cu Stefan.