Muchas gracias de nuevo a todos.
Para quitaros dudas de qué es lo que yo necesitaba exactamente os diré que al final seoane acertó de pleno.
He probado lo de la interface y funciona perfectamente. Pero me obliga a declararme estos 3 procedimientos siguientes porque son heredados de la interface base IUnknown.
Código Delphi
[-]type
IUnknown = interface
['{00000000-0000-0000-C000-000000000046}']
function QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
Como tenía que ponerle un cuerpo a estos procedimientos les he puesto el siguiente cuerpo en mi clase "padre" (prefiero seguir llamándola así para entenderme

):
Código Delphi
[-]function TClasePadre.QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;
begin
inherited;
end;
function TClasePadre._AddRef: Integer; stdcall;
begin
inherited;
end;
function TClasePadre._Release: Integer; stdcall;
begin
inherited;
end;
Lo que no sé es si tendría que poner algo más dentro del cuerpo de esos métodos o si así me funcionará sin problemas. La verdad es que hasta ahora no había utilizado interfaces

.
Aunque supongo que no habrá problemas pues es de esperar que el INHERITED que les he puesto llame a los métodos de la clase TObject.
Muchas gracias de nuevo a todos.