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
 
 
VAR
    UneInstance: TMaClasse
 
 
Begin
   UneInstance:= TMaClasse.Create(1); //création
 
   UneInstance.Create(2); //Simple initialisation sans création
End;
 
Constructor TMaClasse.Create(const i: integer);
Begin
 
   IF (quelquechose) THEN //Je cherche quoi mettre dans ce test à la place de «quelquechose»
     RAISE ECetteInstanceNePeutPasEtreInitialiseeDeuxFois.Create('Les instances de TMaClasse sont constantes après la création et ne peuvent pas être modifiées.');
 
   fi:=i;
End;
Existe-il une variable ou une fonction qui permettrait de différencier entre les deux utilisations d'un constructeur?

En C++ le problème ne se poserait même pas par ce qu'un constructeur n'est pas utilisable en tant que fonction normale. Il faut dire que C++ a des siècles d'avance sur Free Pascal dans le domaine des instances constantes par ce que les attributs d'une classe peuvent être déclarées constants et initialisés dans la liste d'initialisation du constructeur et qu'une instance de classe peut être déclarée constante.