AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MustOverride?

Ein Thema von stahli · begonnen am 13. Feb 2016 · letzter Beitrag vom 14. Feb 2016
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: MustOverride?

  Alt 13. Feb 2016, 23:43
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.
Meine Frage (oder wenn mal will auch Anregung) war, dass der Compiler in dem Fall warnt.

Delphi-Quellcode:
type
   TBaseClass = class
   private
     procedure CommonCleanup;
   protected
     procedure InternalCleanup; virtual; abstract;
   public
     procedure Cleanup;
   end;

   TDerivedClass = class(TBaseClass)
   protected
     procedure InternalCleanup; override;
   end;

   TDerivedSubClass = class(TTDerivedClassClass)
     procedure DoSub;
   end;

procedure TBaseClass.Cleanup;
begin
   CommonCleanup;
   InternalCleanup;
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#12

AW: MustOverride?

  Alt 14. Feb 2016, 00:17
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.
Meine Frage (oder wenn mal will auch Anregung) war, dass der Compiler in dem Fall warnt.
Aber genau das tut doch der Compiler, wenn du die abgeleitete Klasse instanzierst: x1020: Instanz von '%s' mit abstrakter Methode '%s.%s' wird konstruiert (Delphi)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.364 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: MustOverride?

  Alt 14. Feb 2016, 00:21
Aber wenn Du von TDerivedClass ableitest, kannst Du auch vergessen, die InternalCleanUp zu überschreiben.
warum muss in meiner abgeleiteten Klasse die Methode die aufräumt auch unbedingt InternalCleanUp heißen?

Das aufräumen zu vergessen ist immer ein Problem - auch wenn Du ein internalCleanUp hast kannst Du eine intern initialisierte Klasse vergessen. Ich kann nicht ganz nachvollziehen wie du das vermeiden willst.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: MustOverride?

  Alt 14. Feb 2016, 00:35
@Uwe
Oh, ja, CommonCleanup ist ja nicht virtuell.
Merke ich mir mal vor. Jetzt habe ich schon von Hand aufgeräumt.

@Lemmy
Ich dachte, der Compiler kann mich direkt darauf aufmerksam machen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 08: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