AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Statisch Array in der abgeleiteten Klasse verändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Statisch Array in der abgeleiteten Klasse verändern?

Ein Thema von cocsy · begonnen am 10. Okt 2018 · letzter Beitrag vom 12. Okt 2018
 
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 12:25
Ich denke das es mit Generika auch gehen müsste, zumindest in C++ geht es.
Jap, mit den C++ Templates funktioniert sowas wunderschön, weil Diese den Code der resultierenden Klasse intelligent für die Typen erzeugen, die mindestens einmal als Template-Argument verwendet wurden. So wird beim Deklarieren von MyClass<std::string> und MyClass<std::uint32_t> einmal das Gerüst für std::string und einmal das Gerüst für std::uint32_t erzeugt. Oder wie deinem Falle würde auch MyClass<4> bzw. MyClass<8> zwei verschiedene Klassen erzeugen. Das sorgt natürlich für etwas größere Kompilate, eliminiert dafür aber sämtlichen runtime-overhead.

1. Problem:
Delphi erlaubt keine const-Expressions als Argument für Generics.

2. Problem:
Die Delphi Generics sind "dumm", unvollständig und in keiner Weise vergleichbar mit den funktionalen C++ Templates.

Delphi generiert für eine generische Klasse den Code nur einmalig. In Kombination damit, dass man keine gescheiten Constraints angeben kann, sorgt das für teils irrsinnige Konstrukte mit 1000 Pointer-Casts und Typechecks, damit der Compiler nicht wegen inkompatibler Typen meckert. Die Typechecks sind zwar teilweise mitlerweile Intrinsics und unbenutzte Fälle werden tatsächlich auch nicht mehr ins Kompilat aufgenommen, aber dennoch hat man nach wie vor runtime-overhead und zudem ist die Programmierung einer echten generischen Methode in der Regel eine Sisyphus-Aufgabe.

Deshalb: Vergiss es mit den Generics
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  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 13:13 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