Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Inherited bei Funktionen
Bayo - Do 25.07.02 12:14
Titel: Inherited bei Funktionen
Hi zusammen
Ich habe da ein kleines Problem mit Methodenüberlagerung :-(: Sobald ich in einer Funkton die Verarbeitung ihrer Superklasse aufrufe bzw. Inherited, bringt der Compiler die Fehlerbildung: Incompatible types
Ändere ich die Funktion in einer Prozedur und lasse somit den Rückgabewert weg, funktioniert es! Kann ich in einer Funktion kein Inherited aufrufen? Wenn ja, wieso nicht? Natürlich kann ich dieses Problem mit einem Var-Parameter und einer Prozedur lösen, es interessiert mich aber, ob das wirklich nicht geht!
Hier ein gekürztes Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| TKlasse1 = class(TObject) function test: Boolean; Virtual; end;
TKlasse2 = class(TKlasse1) function test: Boolean; Override; end;
implementation
function TKlasse1.test: Boolean; begin Result := False; Mach etwas; Result := True; end;
function TKlasse2.text: Boolean; begin Result := False; Mach etwas anderes; Result := True; Inherited; end; |
Ich bedanke mich für jede Antwort!!
Grüsse Dominic
Tino - Do 25.07.02 12:21
Das müsste so gehen:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| function TKlasse2.text: Boolean; begin Result := False; Mach etwas anderes;
Result := Inherited; end; |
Denn Inherited liefert ja auch ein Ergebnis zurück!
Gruß
Bayo - Do 25.07.02 13:01
Ja, das würde sinn machen... hab ich auch schon probiert, funktioniert leider auch nicht!
Trotzdem danke ich für deine Antwort :-) Grüsse Dominic
Tino - Do 25.07.02 13:17
Sorry, muss natürlich so sein:
Quelltext
1:
| Result := Inherited Test; |
Gruß
TINO
wwerner - Do 25.07.02 13:18
TKlasse1 = class(TObject)
function test: Boolean; Virtual;
end;
TKlasse2 = class(TKlasse1)
function test: Boolean; Override;
end;
implementation
function TKlasse1.test: Boolean;
begin
Result := False;
Mach etwas;
Result := True;
end;
function TKlasse2.test: Boolean;
begin
Result := False;
Mach etwas anderes;
Result := True;
Inherited test;
end;
Bayo - Do 25.07.02 14:05
Yep, das haupt hin :-) Ich bedanke mich für die Antworten!!
Grüsse Dominic
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!