Bonjour,
En développant en POO avec Delphi, du moins en essayant, je suis arrivé au message d'erreur suivant :
"un objet constante ne peut être passé comme paramètre var"
Voici le code (d'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
 
type
  Monstre = class
  end;
 
  Piece = class
  private
    _m : Monstre;
  public
    property m : Monstre read _m write _m;
  end;
 
  Heros = class
  public
    procedure combattre(var M : Monstre);
  end;
Et voici, un extrait de son utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
var
  her : Heros;
  p : Piece;
begin
//instanciation puis
her.combattre(p.m);
//puis libération
C'est sur her.combattre(p.m) (où p est une pièce, et m la property) que le compilateur bloque avec le message d'erreur "un objet constante ne peut être passé comme paramètre var"...

Pourquoi ? Passer par une property empêche donc de fournir une variable par adresse ?

Par la suite, j'ai enlevé le paramètre en tant que var (passage par adresse), et là surprise, en enlevant var, l'objet a quand même été passé par adresse !
Bref, il y a anguille sous roche ! Auriez-vous une explication ?

Merci d'avance, Jacques