AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein was ist der Sinn von Templates/Generics ?
Thema durchsuchen
Ansicht
Themen-Optionen

was ist der Sinn von Templates/Generics ?

Ein Thema von paule32.jk · begonnen am 7. Okt 2024 · letzter Beitrag vom 9. Okt 2024
 
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.878 Beiträge
 
Delphi 13 Florence
 
#16

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 14:13
Bei einer generischen Klasse kann der Compiler den eigentlichen Code erst erzeugen, wenn der tatsächliche Typ von T bekannt ist. Daher gibt es diese Einschränkung.

Alternativ kannst du die function check_ptr als Methode der Klasse deklarieren (dann wäre sie ja auch im Interface Part) oder als lokale function innerhalb von QChar<T>.Create (wenn sie nicht noch anderswo verwendet wird).

Abgesehen davon sieht man in deinem Code gar nicht, warum er überhaupt generisch ist. Das T wird nirgendwo verwendet - zumindest nicht in dem Teil den du zeigst. Ich bringe das deswegen auf den Tisch, da es manchmal sinnvoller ist, eine nicht generische Basisklasse zu haben und von der dann ein generische Ableitung zu erstellen, die sich rein um den generischen Part kümmert.

Delphi-Quellcode:
type
    QChar = class
    protected
        function getOrigin: uint64;
    public
        constructor Create; overload;
        ... // alles was nicht mit T zu tun hat
    end;

    QChar<T> = class(QChar)
      ... // alles was mit T zu tun hat
    end;

implementation

function check_ptr(name: PChar; ptr: uint64): Boolean;
begin
  result := false;
  if ptr = 0 then
  begin
    ErrorMessage(PChar(Format('Error: %s not constructed.',[name])));
    exit;
  end;
  result := true;
end;

constructor QChar.Create;
begin
    inherited Create;

    if not check_ptr(ClassName, getOrigin) then
    begin Free; exit; end;
end;
Übrigens: das Free innerhalb des Create ist etwas irritierend.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 15:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz