![]() |
Statisch Array in der abgeleiteten Klasse verändern?
Ich habe folgendes Problem!
Delphi-Quellcode:
die Funktionen sind alle abhängig von aSize und TLineA und...
TClassA = class(TObject)
public const aSIZE = 2048; type TLineA = array [0 .. aSIZE] of Single; // und ca 20 weitere spezielle Typen die abhängig von aSize sind .... public function.... function.... function.... function.... end; Benötigt wird TClassB, genauso wie TClassA mit aSize=1024, wobei ich nicht alle Funktionen von TClassA ein zweites mal implementieren will. da ich eigentlich die Typen nicht dynamisch machen will (aus Sicht der Optimierung) stehe ich hier auf dem schlauch wie ich am besten vorgehen soll. |
AW: Statisch Array in der abgeleiteten Klasse verändern?
folgendes geht nicht
Delphi-Quellcode:
TClassA = class(TObject)
public const aSIZE : Integer = 2048; .... end; |
AW: Statisch Array in der abgeleiteten Klasse verändern?
folgendes geht auch nicht.
Delphi-Quellcode:
TSizeOfInt = class(TObject)
public const aSize : Integer = 2048; // und auch nicht über eine -->> class function aSize : Integer; virtual; abstract; end; TClassA<SizeOfInt : record> = class(TObject) public type TLineA = array [0 .. SizeOfInt.aSIZE] of Single; // und ca 20 weitere spezielle Typen die abhängig von aSize sind .... end; |
AW: Statisch Array in der abgeleiteten Klasse verändern?
Liste der Anhänge anzeigen (Anzahl: 1)
und auch folgendes geht nicht.
|
AW: Statisch Array in der abgeleiteten Klasse verändern?
Nun, wenn der TE seinen Schwerpunkt in der ausufernden Aneinanderreihung von Wörtern gesetzt hätte, dann würde er nicht programmieren sondern z.B. in einer Zeitung arbeiten.
Ich nehme an es geht ihm um solche Konstrukte
Delphi-Quellcode:
wobei max verschiede Werte annehmen kann/soll.
const
max=1024; type t1 : Array [0..max] of Byte; t2 : Array [0..max] of Char; t3 : Array [0..max] of irgendeintyp; Und diese Änderung soll wohl während der Laufzeit erfolgen. Gruß K-H |
AW: Statisch Array in der abgeleiteten Klasse verändern?
Zitat:
|
AW: Statisch Array in der abgeleiteten Klasse verändern?
Zitat:
bedingte Compilierung? |
AW: Statisch Array in der abgeleiteten Klasse verändern?
TClassA und TClassB werden parallel benötigt, deswegen würde eine beidingte Compelierung nicht funktionieren.
|
AW: Statisch Array in der abgeleiteten Klasse verändern?
Zitat:
Delphi-Quellcode:
und
MyClass<std::string>
Delphi-Quellcode:
einmal das Gerüst für
MyClass<std::uint32_t>
Delphi-Quellcode:
und einmal das Gerüst für
std::string
Delphi-Quellcode:
erzeugt. Oder wie deinem Falle würde auch
std::uint32_t
Delphi-Quellcode:
bzw.
MyClass<4>
Delphi-Quellcode:
zwei verschiedene Klassen erzeugen. Das sorgt natürlich für etwas größere Kompilate, eliminiert dafür aber sämtlichen runtime-overhead.
MyClass<8>
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 :stupid: |
AW: Statisch Array in der abgeleiteten Klasse verändern?
schade, aber trotzdem Danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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