A la compilation j'ai le message d'erreur suivant : "Forward declaraton not solved" pour les méthodes abstraites déclarées dans le type générique GDBConnection ! Le code ci-dessous montre seulement la partie déclaration des objets. Il existe une implémentation pour chaque méthode de la classe TDBConnection, mais aucune pour le générique puisque toutes sont abstraites.
Je ne comprends pas d'où provient le problème ... (J'utilise Lazarus 1.4.4 avec Free Pascal Compiler version 2.6.4+dfsg-4)
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
31
32
33
34
35
36
37
38
39 // ************************************************************** // ************************************************************** generic GDBConnection<C,T> = class protected function rConnection : C; virtual; abstract; // Error forward decalration not solved ! function rTransaction : T; virtual; abstract; // Error forward decalration not solved ! public constructor Creer(databaseName : String); virtual; abstract; // Error forward decalration not solved ! destructor Detruire; virtual; abstract; // Error forward decalration not solved ! procedure Connecter; virtual; abstract; // Error forward decalration not solved ! procedure Deconnecter; virtual; abstract; // Error forward decalration not solved ! property Connection : C read rConnection; // Error forward decalration not solved ! property Transaction : T read rTransaction; // Error forward decalration not solved ! procedure TrCommencer;virtual; abstract; // Error forward decalration not solved ! procedure TrValider; virtual; abstract; // Error forward decalration not solved ! procedure TrAnnuler; virtual; abstract; // Error forward decalration not solved ! end; // ************************************************************** TSQLiteDBConnection = specialize GDBConnection<TSQLite3Connection, TSQLTransaction>; // ************************************************************** TDBConnection = class(TSQLiteDBConnection) private db : TSQLite3Connection; {La connection } tr : TSQLTransaction; {La transaction } protected function rConnection : TSQLite3Connection; override; function rTransaction : TSQLTransaction; override; public constructor Creer(databaseName : String); override; destructor Detruire; override; procedure Connecter; override; procedure Deconnecter; override; procedure TrCommencer; override; procedure TrValider; override; procedure TrAnnuler; override; end;
Partager