Forward Deklaration von Objects?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Forward Deklaration von Objects?

Beitrag von br_klaus »

Gibt es eine Möglichkeit, ähnlich wie die forward-Deklaration bei Prozeduren, dasselbe auch bei objects? Bei Klassen scheint es ja zu genügen, einfach anzugeben Type Tmyclass = Class; und dann weiter unten erst die Definitionen zu bringen. Aber bei Objects bekomme ich da gleich eine Fehlermeldung.

Herzlichen Dank
P. Nikolaus

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Forward Deklaration von Objects?

Beitrag von MAC »

ka.

Ich bekomme ne Dublicate identifer Meldung. Schein so als ob fpc das

Code: Alles auswählen

test = object;
nicht als Forward deklaration sondern als Deklaration an sich versteht.

Code: Alles auswählen

Signatur := nil;

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Forward Deklaration von Objects?

Beitrag von Socke »

In welchem Fall brauchst du denn eine Forward-Deklaration? In der Regel wirst du ein Objekt doch durch ein Zeiger in einer anderen Struktur referenzieren wollen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

am2
Lazarusforum e. V.
Beiträge: 116
Registriert: Di 21. Dez 2010, 09:59
OS, Lazarus, FPC: Win (L 0.9.26 beta FPC 2.2.2)
CPU-Target: 32 Bit

Re: Forward Deklaration von Objects?

Beitrag von am2 »

Ich weiß nicht, ob das geht. Bei Klassen ist das ja einfach, weil der Compiler beim Anlegen sowieso den Platz für einen (bzw. 2) Zeiger reservieren muss. Er müsste also deswegen nicht zweimal laufen. Wenn Du irgendeinen anderen Typen forward deklarierst, dann weiß der Kompiler beim ersten Auftreten ja noch nicht, wieviel Platz er für das Ding reservieren muß.
Ist sicher machbar, aber ist es gemacht?

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Forward Deklaration von Objects?

Beitrag von marcov »

Ich glaube nicht das das mit TP Objekte kann. Aber man kann, ähnlich wie bei Records, ein Zeiger nach dem Objekt Typ forward Deklarieren.


Also etwa

Code: Alles auswählen

Type   
      PObjectB  = ^TOBjectB;
      TObjectA = object
                           refb : POBjectB:
                         end;
      TObjectB= object 
                         ... etwas mit A
                        end;
Aber ich würde Classes nutzen, und nicht TP Objecten

diogenes
Beiträge: 200
Registriert: So 11. Jul 2010, 18:39
OS, Lazarus, FPC: Linux
CPU-Target: 64 Bit
Wohnort: Wien
Kontaktdaten:

Re: Forward Deklaration von Objects?

Beitrag von diogenes »

Ich würd' auch eher class verwenden als object, heutzutage. Aber wenn's object sein muß, würde ich's machen wie oben beschrieben. Meine Güte, ich hab's Jahre lang getan, als ich noch in BP7 gecodet habe ...
Ceterum censeo computatores per Pascal docendos esse.

Antworten