Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   abstakte Klasse kompiliert nicht (https://www.delphipraxis.net/171196-abstakte-klasse-kompiliert-nicht.html)

Jumpy 25. Okt 2012 11:12

abstakte Klasse kompiliert nicht
 
Hallo folgende abstakte Klasse will nicht komplilieren, Fehler s.u.
Aber ich seh vor lauter Bäumen den Wald bzw. das Problem nicht.

Delphi-Quellcode:
unit uJob;

interface

uses ADODB,uMSG;

Type TJob = class abstract
  private
  protected
    Con:TADOConnection;
    fMSG:TMSG;
    ID:String;
  public
    constructor create(ADOCon:TADOConnection);
    function Execute(JobID:String):Boolean;virtual;abstract;
    property MSG:TMSG read fMSG write fMSG;
  end;

implementation

{ TJob }

constructor TJob.create(ADOCon: TADOConnection);
begin
  Con:=ADOCon;
end;

end.
Code:
[Fehler] uJob.pas(8): ',' oder ':' erwartet, aber Bezeichner 'private' gefunden
[Fehler] uJob.pas(9): ',' oder ':' erwartet, aber Bezeichner 'protected' gefunden
[Fehler] uJob.pas(10): ',' oder ':' erwartet, aber Bezeichner 'Con' gefunden
[Fehler] uJob.pas(15): Ungenügende Forward- oder External-Deklaration: 'TJob.Execute'
[Fataler Fehler] uJoblist.pas(37): Verwendete Unit 'uJob.pas' kann nicht compiliert werden

Uwe Raabe 25. Okt 2012 11:18

AW: abstakte Klasse kompiliert nicht
 
Gab es das
Delphi-Quellcode:
class abstract
schon in Delphi 6?

Bummi 25. Okt 2012 11:23

AW: abstakte Klasse kompiliert nicht
 
Delphi 7 kennt es noch nicht ....

Bernhard Geyer 25. Okt 2012 12:24

AW: abstakte Klasse kompiliert nicht
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1188310)
Gab es das
Delphi-Quellcode:
class abstract
schon in Delphi 6?

Nö. Klassen sind impliziet abstrakt wenn sie abstrakte methoden haben.

Jumpy 25. Okt 2012 12:27

AW: abstakte Klasse kompiliert nicht
 
Ahhhrg. Danke. Ich hab das Konstrukt schon mehrfach eingesetzt, aber in Delphi2010. Dass das so in Delphi 6 nicht geht, hab ich gar nicht dran gedacht.

himitsu 25. Okt 2012 12:35

AW: abstakte Klasse kompiliert nicht
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1188331)
Nö. Klassen sind impliziet abstrakt wenn sie abstrakte methoden haben.

Aber so kann man nochmal explizit sagen, daß es so ist (vorallem wenn sich die abstracte Methode irgendwo in der Mitte versteckt).
Aber ich fände es praktischer, wenn der Compiler es verbieten würde, wenn man versucht eine explizit abstakte Klasse zu erstellen (Create).
Nicht nur Warnung, sondern Error, also genuso wie er es verbietet eine Sealed-Class abzuleiten.

Uwe Raabe 25. Okt 2012 12:45

AW: abstakte Klasse kompiliert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1188339)
Aber ich fände es praktischer, wenn der Compiler es verbieten würde, wenn man versucht eine explizit abstakte Klasse zu erstellen (Create).
Nicht nur Warnung, sondern Error, also genuso wie er es verbietet eine Sealed-Class abzuleiten.

Dann stell dir das doch so ein:

himitsu 25. Okt 2012 13:09

AW: abstakte Klasse kompiliert nicht
 
Manchmal will man soeine Instanz ja dennoch erstellen. :stupid:
Darum ja auch nur, wenn es "explizit" ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz