![]() |
C++ mit dem Borland Builder 6. Komponentenzugriff mit . u -&
Hallo!
Noch eine Frage beim erlernen hat sich nicht klären lassen: Komponentenzugriffe erfolgen mal mit . (Punkt) und mal mit dem Pfeil.
Code:
In einem Tutorial habe ich gelesen, das mit . ein Komponentenzugriff erfolgt, mit -> ein Komponentenzugriff über einen Zeiger erfolgt. Allerdings habe ich noch nicht herausgefunden, wann was zu benutzen ist und warum.
Edit1->Text.ToDouble ; // Zugriff mit .
MemoOut->Lines->Add("hallo") ; // Zugriff mit -> Hat jemand eine einfache Erklärung parat? Gruß glunzl |
Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .
Mit . greifst du auf die Felder eines statisch instanzierten Objekts zu, mit -> greifst du auf die Felder eines dynamisch instanzierten Objekts zu. Dabei ist a->b nur eine Abkürzung von (*a).b
Code:
Der Vollständigkeit halber gibt es noch zwei weitere Zugriffsoperatoren, nämlich .* und ->*, beides sogenannte "Pointer-to-Member"-Operatoren. Man greift damit nicht direkt auf ein Member der Klasse zu, sondern eben über einen Zeiger auf das Member.
class KomplexeZahl
{ float real; float img; }; // statisch instanziert KomplexeZahl zahl; zahl.real = 1.0f; zahl.img = 0.5f; // dynamisch instanziert KomplexeZahl* zahl; zahl = new KomplexeZahl; zahl->real = 1.0f; zahl->img = 0.5f; // ist das selbe wie: (*zahl).real = 1.0f; (*zahl).img = 0.5f; Beispiel:
Code:
Dieser Code ruft die Funktion auf, auf die pFunktion zeigt, und übergibt ihr "einWert".
(pObjekt->*pFunktion)(einWert);
|
Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .
Zitat:
Komplexe Zahlen muß ich am Wochenende eh üben, danke für die Erinnerung :-) Aber worin besteht nun der Unterschied in meinem Beispiel mit TEdit und TMemo? Beide sind zur Entwurfszeit erzeugt worden, aber trotzdem wird die add Methode mit dem -> angesprochen :gruebel: Gruß glunzl |
Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .
Generell werden in der VCL alle Objekte (TEdit, TMemo, TStringList) dynamisch alloziert. Deshalb der ->. Einzigste Ausnahme bildet der AnsiString. Diesen macht man in der Regel nicht dynamisch. Deshalb wird auf Methoden des AnsiStrings in der VCL mit . zugegriffen. Text ist nunmal ein AnsiString. Lines dagegen ist eine TStringList die dynamisch erzeugt wird.
|
Re: C++ mit dem Borland Builder 6. Komponentenzugriff mit .
Ach sorum läuft der Hase :-)
Ist AnsiString denn wirklich die Ausnahme, oder gibt es da noch andere geläufige Kandidaten? Gruß glunzl |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz