Satisfying interface requirements
Jason House
jason.james.house at gmail.com
Thu Jul 26 20:11:56 PDT 2007
Chris Nicholson-Sauls wrote:
> Jason House wrote:
>> Attached is a simple example that demonstrates my problem (with dmd
>> 1.018). It seems like inheriting from a class that contains functions
>> that would satisfy an interface does not work. Usually, I work around
>> this by just adding a manual call to super's copy. Unfortunately,
>> this only works if super's member function is not final. Any tips on
>> how to work around this?
>>
>> If line 7 is commented out:
>> test.d(6): class test.foo interface function bar.start is not implemented
>>
>> If line 7 is present:
>> test.d(7): function test.foo.start cannot override final function
>> tango.core.Thread.Thread.start
>
> The standard technique is to use an alias, like so:
>
> interface Foo {
> int bar();
> }
>
> class A {
> int bar();
> }
>
> class B : A, Foo {
> alias A.bar bar;
> }
>
> Although, personally, I'm not entirely satisfied with this. I would
> think checking for interface implementation warrants a look up the
> inheritance chain. I think there was a reason given in an older
> discussion, but darned if I can remember it now.
>
> -- Chris Nicholson-Sauls
For whatever reason, that trick didn't work for me. I got the same
error as if I hadn't had the alias in there at all.
More information about the Digitalmars-d-learn
mailing list