AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TObject.GetHashCode hides virtual method of base type TObject
Thema durchsuchen
Ansicht
Themen-Optionen

TObject.GetHashCode hides virtual method of base type TObject

Ein Thema von Rollo62 · begonnen am 3. Feb 2016 · letzter Beitrag vom 4. Feb 2016
 
Rollo62

Registriert seit: 15. Mär 2007
3.940 Beiträge
 
Delphi 12 Athens
 
#1

TObject.GetHashCode hides virtual method of base type TObject

  Alt 3. Feb 2016, 16:28
Delphi-Version: 10 Seattle
Hallo zusammen,

ich bin gerade beim Frühjrahrsputz, und natürlich finde ich wieder ein Thema was erst einfach aussieht,
aber wo man sich immer tiefer reinwurschteln muss.

Ich habe die PegTopCommon library für ein Projekt ausprobiert, von der ich nur einen kleinen Teilbereich bräuchte.

Beim Kompilieren habe ich aber immer die unschöne Warnung s.o.

Ich habe (einen) der Verursacher unten mal rausextrahiert, und separat getestet.

Das Problem ist wohl Folgendes:
- jede Klasse ist von TObject abgeleitet
- TObject enthält eine virtuelle GetHashCode Funktion
- Die PegTop Klassen machen genau das wie oben, und benutzt dämlicherweise den speziellen Namen der Funktion mit
anderer Signatur

Interessant zu dem Thema auch;
http://www.delphi-treff.de/object-pascal/vererbung/
http://blog.marcocantu.com/blog/6hidden_delphi2009.html
http://codebetter.com/davidhayden/20...alsobject-obj/
http://docwiki.embarcadero.com/Libra...ct.GetHashCode


Meine Frage ist wie sollte man mit so einer Situation umgehen, kann man das per overload erledigen (so einfach in dem Fall jedenfalls nicht).
Die grosse Frage ist aber sollte man das overloaden, immerhin ist das ja fast wie ein Keyword zu sehen, und wer weiss
was sich im Weiteren Objektleben so daran stört.
Einfach ignorieren ist für mich auch keine Lösung, solche Warnings will ich nicht im Code sehen.

Ich werde PegTop wohl rausschmeissen, anyway, aber noch habe ich den Code im Test Laufen und vielleicht gibt es doch das eine oder andere wo PegTop sich lohnt.
Interessieren würde mich schon was die sich dabei gedacht haben und wie man das evtl. fixen kann.


Delphi-Quellcode:
unit Unit1;

interface

uses
   System.Classes
  ;


type
  TPegtopAbstractHash = class
  protected
  public
    constructor Create(InitialCapacity: Integer = 100); virtual;
  end;

  TPegtopIntHash = class(TPegtopAbstractHash)
  private

    // Hier kommt Warning
    // hides virtual method of base type TObject
    function GetHashCode(Key: Integer): Integer;


  public
    constructor Create(InitialCapacity: Integer = 100); override;
    destructor Destroy; override;
  end;




implementation

{ TPegtopAbstractHash }

constructor TPegtopAbstractHash.Create(InitialCapacity: Integer);
begin


end;

function TPegtopIntHash.GetHashCode(Key: Integer): Integer;
begin
  Result := 0;
end;


constructor TPegtopIntHash.Create(InitialCapacity: Integer);
begin
   inherited Create( InitialCapacity );
end;

destructor TPegtopIntHash.Destroy;
begin

end;


end.
  Mit Zitat antworten Zitat
 


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 04:40 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