Einzelnen Beitrag anzeigen

Zwoetzen

Registriert seit: 19. Sep 2007
Ort: Ilmenau
93 Beiträge
 
Delphi 2009 Professional
 
#1

[Class Operator] Zugriff auf privates Feld des Records

  Alt 4. Aug 2009, 18:53
Hi DP'ler,

diesmal hab ich eine Frage zu einem (möglichst ^^) sauberen Programmier-Stil.

Ich habe vor einigen Wochen die Klassen-Operatoren entdeckt ( ), und diese mal ausprobiert, dabei bin ich nun bei folgendem Gerüst gelandet:

Delphi-Quellcode:
type
  TMyRecord = record
  strict private
    FValue: Integer;
  public
    class operator Implicit(const I: Integer): TMyRecord;
    class operator Implicit(const MR: TMyRecord): Integer;
  end;

[...]

class operator TmtgColor.Implicit(const MR: TMyRecord): Integer;
begin
  Result := MR.FValue; // Zugriff auf privates Feld?
end;
Mir geht es dabei um den Zugriff in der Implicit-Funktion auf das private Feld: Ist das sauber von der Programmierung her?
Ich hätte jetzt vermutet, dass man durch den Zugriff über MR "von außen" auf das Record zugreift, und somit das FValue nicht erreichbar sein dürfte. Allerdings scheint der Class Operator das (Strict) Private auszuhebeln, denn der Compiler hat nix dagegen, kompiliert und funktioniert wunderbar so.

Doch irgendwie gefällt mir das nicht... Was meint ihr dazu?
Sollte ich (man) das so lassen, oder eher eine öffentliche Property zur Verfügung stellen, um einen (meiner Meinung nach) saubereren Zugriff auf den internen Wert zu bekommen?
(Wie gesagt, mir persönlich ist es irgendwie ein Dorn im Auge, von außen auf ein privates Feld zuzugreifen.)

[Anmerkung: Es finden in den Implicit-Funktionen noch ein paar Umrechnungen statt, ist also mehr als nur eine einfache Zuweisung ]


Würde mich über ein paar Meinungen freuen.

MfG Zwoetzen
  Mit Zitat antworten Zitat