A renewed call for interface methods with bodies
BCS
BCS at pathlink.com
Fri Jan 25 10:54:02 PST 2008
Ary Borenszweig wrote:
> Burton Radons escribió:
>
>> BCS Wrote:
>>
>>> Burton Radons wrote:
>>> [...]
>>>
>>>
>>> something just occurred to me:
>>>
>>> The only actions that a function body in an interfaces could do to
>>> "this" is function calls that would have to be virtual (or how could
>>> it ever do anything) however the code generated for a interface
>>> method needs to know the type of the object to be able to make the
>>> calls correctly. The only reasonable way I can see to let interface
>>> functions have bodies would be to in effect use a mixin.
>>>
>>> Can anyone think of a better solution?
>>
>>
>> There aren't any problems in compiling interface methods with bodies -
>> it's exactly the same as a class with abstract methods.
>
>
> Doesn't that lead to multiple inheritance, with all its complexities?
I think it would be more complex than the current implementation but not
that complex.
The issue is that with the current interfaces, the function pointers in
the interface v-tbl are specific to the class that implements the
interfaces. This results in the code expecting the this pointer to point
to the start of the object where the class v-tbl is (or there abouts).
For the proposed interfaces to work simply, the this pointer inside the
un-overloaded function would have to point to the interface v-tbl (which
IIRC is not at the start of the object, but inside overloaded functions,
it would have to point the the start of the object. I can't think of any
simple way to make this work.
I'll grant it can work, I expect it would be somewhat complex though.
More information about the Digitalmars-d
mailing list