Gibt es eine Erklärung, warum die Reihenfolge der Deklaration (constructor vs property) bestimmt, ob FPC beim Kompilieren einen "Duplicate Identifier"-Error auswirft?
Keine Fehlermeldung:
Code: Alles auswählen
program project1;
{$mode ObjFPC}{$H+}
uses sysutils;
type
Person = class
_name: string;
constructor Create(Name: string);
property Name: string read _name write _name;
end;
constructor Person.Create(Name: string);
begin
inherited Create;
self.Name := Name;
end;
var
Kunde: Person;
begin
Kunde := Person.Create('Name');
writeln(Kunde.Name);
FreeAndNil(Kunde);
end.
Code: Alles auswählen
program project1;
{$mode ObjFPC}{$H+}
uses
SysUtils;
type
Person = class
_name: string;
property Name: string read _name write _name;
constructor Create(Name: string); // <- Hier die Fehlermeldung
end;
constructor Person.Create(Name: string);
begin
inherited Create;
self.Name := Name;
end;
var
Kunde: Person;
begin
Kunde := Person.Create('Name');
writeln(Kunde.Name);
FreeAndNil(Kunde);
end.
Anmerkung: Die "Konvention" mit "AName" ist mir bekannt.