Syntax: UDT_Pointer->Feldname
Typ: Operator
Kategorie: Operatoren
Der Pfeil-Operator greift auf ein Element eines Feldes zu, zu dem ein Pointer angegeben wurde.
Der Operator kann mithilfe von OPERATOR überladen werden.
Der Pointer auf das gewünschte Element kann auch mithilfe von OFFSETOF berechnet und anschließend dereferenziert werden. Aufgrund der Pointerarithmetik ist es dabei jedoch notwendig, auf die richtigen Typen zu casten, was diese Methode sehr umständlich macht. Im folgenden Beispiel wird sie zur Demonstration aufgeführt.
Beispiel:
TYPE rect
x AS SHORT
y AS INTEGER
END TYPE
DIM r AS rect
DIM rp AS rect PTR = @r
rp->x = 4
rp->y = 2
' Direkter Zugriff ohne Pointer
PRINT "x = " & r.x & ", y = " & r.y
' Zugriff über den Pfeil-Operator
PRINT "x = " & rp->x & ", y = " & rp->y
' Pointer-Zugriff über OFFSETOF
PRINT "x = " & *Cast(Short Ptr, (Cast(UInteger, rp) + OFFSETOF(rect, x))) & _
", y = " & *Cast(Integer Ptr, (Cast(UInteger, rp) + OFFSETOF(rect, y)))
SLEEP
Wie man sieht, wird tatsächlich die Variable 'r' durch Zugriffe über diesen Operator verändert.
Unterschiede zu QB: neu in FreeBASIC
Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.13
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht dieser Operator nicht zur Verfügung.
Siehe auch:
TYPE (UDT), TYPE (Funktion), WITH, OFFSETOF, . (Feldzugriff), @ (Adresse von), * (Wert von)