Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - Pfeil

Referenz-Navigation

 

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 BefehlsreferenzeintragOPERATOR überladen werden.

Der Pointer auf das gewünschte Element kann auch mithilfe von BefehlsreferenzeintragOFFSETOF berechnet und anschließend dereferenziert werden. Aufgrund der Pointerarithmetik ist es dabei jedoch notwendig, auf die richtigen Typen zu Befehlsreferenzeintragcasten, 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.

Beispiel zur Operator-Überladung:

Type T Extends Object
    Public:
    Declare Function memberFunction() As Integer
End Type
Function T.memberFunction() As Integer
    Return 15 'irgendeine beispielhafte Rückgabelogik
End Function

Type D
    As T Ptr m_ptr
End Type
Operator -> (ByRef d_ As D) ByRef As T
    Return *d_.m_ptr
End Operator

Dim As D d_
Print d_->memberFunction()
Sleep

In dem Beispiel wird der Pfeil für die Klasse D so überladen, dass als Rückgabe der innere T Ptr dereferenziert wird. Dabei ist die BefehlsreferenzeintragBYREF Rückgabe entscheidend.
Somit kann direkt auf memberFunction von m_ptr zugegriffen werden.


Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht dieser Operator nicht zur Verfügung.

Siehe auch:
BefehlsreferenzeintragTYPE (UDT), BefehlsreferenzeintragTYPE (Funktion), BefehlsreferenzeintragWITH, BefehlsreferenzeintragOFFSETOF, Befehlsreferenzeintrag. (Feldzugriff), Befehlsreferenzeintrag@ (Adresse von), Befehlsreferenzeintrag* (Wert von)


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 06.08.2007 von AdministratorSebastian angelegt.
  • Die aktuellste Version wurde am 25.01.2014 von RedakteurMOD gespeichert.
  Versionen Versionen