AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OOP und ihre Tücken...

Ein Thema von DelphiCreak · begonnen am 8. Sep 2012 · letzter Beitrag vom 9. Sep 2012
Antwort Antwort
Seite 2 von 2     12
Furtbichler
(Gast)

n/a Beiträge
 
#11

AW: OOP und seine tücken...

  Alt 9. Sep 2012, 10:35
Ich verstehe das Problem nicht. Das funktioniert doch alles wie gewünscht:

Delphi-Quellcode:
Type
  TA = Class
    Function WhoAmI : String; Virtual;
  End;
  TB = Class(TA)
    Function WhoAmI : String; override;
  End;

Function TA.WhoAmI : String;
begin
  result := 'A';
end;
Function TB.WhoAmI : String;
begin
  result := 'B';
end;

Function GetInst : TA;
Begin
  Result := TB.Create;
End;

Var
  test : TA;
begin
  test := GetInst;
  Writeln(test.WhoAmI) // Liefert 'B', was auch sonst
  test.free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: OOP und seine tücken...

  Alt 9. Sep 2012, 10:56
Ich verstehe das Problem nicht.

Das Problem ist, dass die Elternklasse keinen primitven Datentypen zurückgibt, sondern eine Objektinstanz. In den abgeleiteten Klassen soll nun auch eine Instanz einer abgeleiteten Klasse zurückgegeben werden, deren Methoden man dann ohne Cast nutzen kann.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#13

AW: OOP und ihre Tücken...

  Alt 9. Sep 2012, 14:28
Hä?
Zitat:
Hat man nun allerdings eine Prozedur a la:
Delphi-Quellcode:
function GetOSFile: noFile;
begin
    Result := noFile_Permanent.Create;
end;
Landet man, wenn man die Rückgabe dieser Prozedur anspricht, bei den Prozeduren der BasisKlasse noFile (z.B. habe ich eine Methode Length, die bei noFile = 0 zurückgibt, bei Permanet die Länge der Datei), statt bei denen von noFile_Permanent.
Hier ist eine Funktion (keine Methode), die eine Instanz liefert und er will auf virtuelle Funktionen, die einen Basistypen (hier: Integer) liefern, zugreifen und wundert sich, das nur die der im Basistyp implementiere Code verwendet wird.

Das widerspricht aber deiner Erklärung.

Sein Problem habe ich durch meinen Code wiederlegt. Mir scheint, ihr redet von etwas anderem.

Das Wetter ist eh zu schön, um hier vor dem Rechner zu sitzen. Viel Spass noch.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz