type private

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6938
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

type private

Beitrag von Mathias »

Bei dem Mustercode ist TVector und TFace öffentlich.
Gibt es eine Möglichkeit, TVector private zu machen ?
Ich kann TVector nicht in implemtations Teil deklarieren, da es in TFace gebraucht wird.

Code: Alles auswählen

interface
...
type
  TVector = array[0..2] of single;
 
  TFace = class(TObject)
  private
    VectorArray: array of TVector;
  end;
 
implementation
...
 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: type private

Beitrag von theo »

TVector ist ja nur eine Typdeklaration. Wie soll die private sein?
Du meinst wohl nicht im interface deklariert. Ich wüsste jetzt nicht wie, aber auch nicht warum.

wp_xyz
Beiträge: 5174
Registriert: Fr 8. Apr 2011, 09:01

Re: type private

Beitrag von wp_xyz »

Hab das noch nie probiert, aber das hat eben der Compiler akzeptiert - siehe auch http://wiki.freepascal.org/extended_class_syntax

Code: Alles auswählen

 
  TFace = class(TObject)
  private
    type
      TVector = array[0..2] of single;
    var
      VectorArray: array of TVector;
  end;
 
In meiner Praxis habe ich solche Konstruktionen allerdings nie vermisst. Bei der übertriebenen Anwendung von "private" habe ich mich früher oder später selbst ausgesperrt...

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: type private

Beitrag von theo »

Achso, ja. Das nennt man bei Delphi wohl "class type". Habe ich noch nie gebraucht.
http://edn.embarcadero.com/article/34324

BeniBela
Beiträge: 321
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: type private

Beitrag von BeniBela »

Oder eine neue Unit erstellen, die nur TVector enthält und in der Originalunit usen.

wp_xyz
Beiträge: 5174
Registriert: Fr 8. Apr 2011, 09:01

Re: type private

Beitrag von wp_xyz »

Oder eine neue Unit erstellen, die nur TVector enthält und in der Originalunit usen.
Aber dann ist TVector öffentlich, sonst kannst du TVector in der Originalunit ja nicht aufrufen.

BeniBela
Beiträge: 321
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: type private

Beitrag von BeniBela »

Aber jemand der nur die Originalunit einbinden, kann auf TVector nicht zugreien

Antworten