Hallo,
Mir ist leider kein besserer Titel eingefallen.
Es geht darum, dass ich eine "Normale" und eine generische Klasse habe.
Das ganze sieht erstmal so aus:
Delphi-Quellcode:
TKlasseA = class
constructor Create(AParam: TObject);
end;
TKlasseB<T: TKlasseA> = class
procedure EineMethode;
end;
Jetzt will ich in TKlasseB<T>.EineMethode() dynamisch ein Objekt vom Typ T erstellen.
Delphi-Quellcode:
procedure TKlasseB<T>.EineMethode;
var X: TObject;
begin
X := T.Create(Self);
end;
Der Compiler meckert:
Zitat:
[DCC Fehler] Neue Instanz kann ohne CONSTRUCTOR-Einschränkung in der Typparameterdeklaration nicht erstellt werden
Definiere ich KlasseB so:
Delphi-Quellcode:
TKlasseB<T: constructor, TKlasseA> = class
procedure EineMethode;
end;
Dann kann ich nur den parameterlosen (TObject-)Konstruktor aufrufen:
X := T.Create(Self);
Zitat:
[DCC Fehler] ')' erwartet, aber 'Self' gefunden
Nächster Versuch:
Delphi-Quellcode:
TKlasseA = class
constructor Create(AParam: TObject);
end;
TKlasseAClass = class of TKlasseA;
TKlasseB<T: TKlasseA> = class
procedure EineMethode;
end;
procedure TKlasseB<T>.EineMethode;
var Typ: TKlasseAClass;
X: TObject;
begin
Typ := TKlasseAClass(T.ClassType);
X := Typ.Create(Self);
end;
Das kompiliert jetzt zwar, aber ich erhalte beim Aufrufen des Konstruktors eine Zugriffsverletzung.
Ich glaube dass in "Typ" irgendwie keine gültige Klasse drin steht...
Weiß jemand was ich machen kann?
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."