W1009 La redéclaration de '%s' cache un membre dans la classe de base (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Une propriété a été créée dans un type class avec le même nom qu'une variable contenue dans une des classes de base. Une raison possible, mais pas toujours apparente, à cette erreur est qu'une nouvelle version de la hiérarchie de classe de base a été installée et contient de nouvelles variables membre qui ont des noms identiques à ceux des propriétés. -W


(*$WARNINGS ON*)
program Produce;

  type
    Base = class
      v : integer;
    end;

    Derived = class (Base)
      ch : char;
      property v : char read ch write ch;
    end;

begin
end.

Derived.v redéfinit, et par conséquent cache Base.v; il est impossible d'accéder à Base.v dans une variable de type Derived sans transtypage.


(*$WARNINGS ON*)
program Solve;
  type
    Base = class
      v : integer;
    end;

    Derived = class (Base)
      ch : char;
      property chV : char read ch write ch;
    end;

begin
end.

En changeant le nom de la propriété dans la classe dérivée, l'erreur est allégée.