Re: Interfaces and private types



Philippe Tarroux schrieb:
Randy Brukardt wrote:
Specifically, it violates 7.3(7.3/2): "the partial view shall be a
descendant of an interface type (see 3.9.4) if and only if the full type is
a descendant of the interface type."
As written, this is illegal because type T does not have the interface Int.
As it is written the compiler i use doesn't mention any error and i interpreted this construct as legal because :

1/ the interface is synchronized thus allowing to derive concurrent or non concurrent types
2/ The partial view is a descendant of the interface type
3/ The full view precises that the partial view correspond to a concurrent type but hides this detail to the user

I'd rather think that the compiler should diagnose conflicting
declaration of T in the private part as the private T does not
declare a relation with the public T.


If you do not want to derive T publicly, why not

package Test_Interfaces is

type Int is synchronized interface;
procedure Init (I : in out Int) is abstract;

type T is limited private;

private

task type T is new Int with
overriding entry Init;
end T;
end Test_Interfaces;

.



Relevant Pages

  • TComponent and interfaces problem (in D5)
    ... I have a class which descents from TComponent and implements an interface ... aThing: ISomeInterface; ... TComponent descendant for an interface in Delphi 5. ...
    (borland.public.delphi.language.objectpascal)
  • Re: Interfaces and private types
    ... descendant of an interface type if and only if the full type is ... this is illegal because type T does not have the interface Int. ... overriding procedure Init; ...
    (comp.lang.ada)
  • Re: Interfaces and private types
    ... descendant of an interface type if and only if the full type is ... this is illegal because type T does not have the interface Int. ... declaration of T in the private part as the private T does not ...
    (comp.lang.ada)
  • Re: a question for Interface experts
    ... > The nice thing is that for existing getter/setter functions, ... You could declare an interface as: ... or that one specific form in your app, as IMyGettersAndSetters. ... tomorrow you wanted to query a TDataset descendant or a TList descendant for property X, you'd have to either have a bunch of IF ...
    (borland.public.delphi.non-technical)
  • Re: Abstraction encapsulation & interfaces
    ... > encapsulation the same as creating an interface? ...
    (alt.comp.lang.learn.c-cpp)