Existe-il une variable ou une fonction qui permettrait de différencier entre les deux utilisations d'un constructeur?
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;
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.
Partager