Hallo,
Ich habe folgendes Problem. Konkret für die FPCanvas Klasse. Ich will eine neue Unit anlegen, dort einige Klassen benutzen, die abstrakte Methoden einführen. Diese abstrakten Methoden will ich nun überschreiben, die sind aber protected, nicht public. Einige sind sogar private. Wie kann ich die nun in einer anderen Unit in der von mir abgeleteten Klasse, mit der Basisklasse in der FPCanvas Unit, überschreiben? Ich bekommen die Fehlermeldung
meineUnit.pp(611,13) Error: identifier idents no member "überschriebene Methode"
Ich weiß, dass zum Beispiel private Methoden und Felder von außen nicht erreichbar sind, wenn ich aber die abgeleitete Klasse in derselben Unit implementiere, wie die die Basisklasse, habe ich auch auf die privaten Bezeichner dieser Basisklasse vollen Zugriff. WIe schaut das nun bei protected aus? Gibt es da inzwischen sowas wir friend class aus der Sprace c++ oder muss ich die von mir abzuleitenden Klassen in die FPCanvas Unit übernehmen. Es handelt sich um die FPCanvas Unit aus dem FCLImage Package.
Protected Methoden eine Klasse in fremder Unit überschreiben.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1435
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Protected Methoden eine Klasse in fremder Unit überschreiben.
Überschreiben kannst du nur als protected oder public deklarierte Methoden und auch nur dann wenn diese als virtual deklariert sind.
-
- Beiträge: 830
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Protected Methoden eine Klasse in fremder Unit überschreiben.
protected Bezeichner sind in abgeleiteten Klassen sowohl nutz- als auch überschreibbar. Nur bei private führt kein Weg vorbei.
FPC Compiler Entwickler
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1435
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Protected Methoden eine Klasse in fremder Unit überschreiben.
und mit strict private auch nicht in der gleichen unit.PascalDragon hat geschrieben: ↑Mo 25. Jan 2021, 14:01protected Bezeichner sind in abgeleiteten Klassen sowohl nutz- als auch überschreibbar. Nur bei private führt kein Weg vorbei.