Bonjour à toutes & à tous,

Je cherche à réaliser quelque chose qui existe mais je ne me souviens plus comment le faire et mes recherches sont restées infructueuses...

Contexte:

Une classe A qui contient un champ de type classe V.
Le but étant de dériver la classe V, la passer en paramètre à l'objet de classe A qui va créer une instance de celle-ci.

Exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
TClasseAderiver = class
  PUBLIC
    function WriteToStream( const pStream: TStream ): Boolean; virtual; abstract;
    function LoadFromStream( const pStream: TStream ): Boolean; virtual; abstract;
end;
 
TClassContainer = class
  PRIVATE
    TheClass: TClasseAderiver;
  PUBLIC
    constructor Create( pSourceClass: TClasseAderiver );
    procedure Save( const pStream: TStream );
    procedure Load( const pStream: TStream );
end;
 
constructor TClassContainer.Create( pSourceClass: TClasseAderiver )
begin
  TheClass := pSourceClass.Create;
end;
 
procedure TClassContainer.Save( const pStream: TStream );
begin
  TheClass.SaveToStream( pStream );
end;
 
procedure TClassContainer.Load( const pStream: TStream );
begin
  TheClass.LoadFromStream( pStream );
end;
Bien entendu, ce code reflète ce que je désire obtenir mais ne fonctionne pas à la compilation...

Merci d'avance pour votre aide !