Einzelnen Beitrag anzeigen

Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Abstrakter Vorfahr + Interface gemeinsam

  Alt 15. Dez 2021, 14:37
Etwas in die Richtung?

Delphi-Quellcode:
unit Unit24;
interface
type
  Tabstract = class
    protected
      function getint : integer; virtual; abstract;
  end;

  IBaseInterface = Interface
  ['{3803EF76-0C39-4992-AD91-B2F7F6EED72E}']
  end;

  Tconcret = class(Tabstract, IBaseInterface)
  private
    FRefCount: Integer;
  protected

    function getint: Integer; override;
  public
    function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall;
    function _AddRef: Integer; stdcall;
    function _Release: Integer; stdcall;
  end;

implementation

{ Tconcret }

function Tconcret.getint: Integer;
begin
     result := 0;
end;

function Tconcret.QueryInterface(const IID: TGUID; out Obj): HRESULT;
begin
      if GetInterface(IID, Obj) then
    Result := 0
  else
    Result := E_NOINTERFACE;
end;

function Tconcret._AddRef: Integer;
begin
 AtomicIncrement(FRefCount)
end;

function Tconcret._Release: Integer;
begin
  Result := AtomicDecrement(FRefCount);
  if Result = 0 then
  begin
    Destroy;
  end;
end;



end.
Fritz Westermann
  Mit Zitat antworten Zitat