Satisfying interface requirements
Chris Nicholson-Sauls
ibisbasenji at gmail.com
Thu Jul 26 13:29:50 PDT 2007
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
More information about the Digitalmars-d-learn
mailing list