Is this a bug?
Bruno Medeiros
brunodomedeirosATgmail at SPAM.com
Sun Jul 9 03:49:25 PDT 2006
freeagle wrote:
> Tom S wrote:
>> freeagle wrote:
>>> I have a class BaseWindow
>>> {
>>> Dimension2D size()
>>> {
>>> return _size;
>>> }
>>>
>>> abstract void size(Dimension2D size);
>>> }
>>>
>>> and derived class Win32Window : BaseWindow
>>> {
>>> void size(Dimension2D size)
>>> {
>>> _size.set(size);
>>> }
>>> }
>>>
>>> lets say i have a reference to class Win32Window. When i try to call
>>> method _window.size(), compiler complains it doesn't match arguments
>>> size(Dimension2D). Until i specify is to
>>> (cast(BaseWindow)_window).size(). Why??
>>
>> I don't remember the exact reason, but try aliasing 'size' from the
>> BaseWindow's scope, like:
>>
>> class Win32Window : BaseWindow {
>> void size(Dimension2D size) {
>> .....
>> }
>>
>> alias super.size size; // iirc
>> }
>>
>>
>
> the problem is not that i have to type a bit more to actually call the
> method, i just don't understand why its not part of Win32Window
> interface, when Win32Window class is publicly derived from BaseWindow
> defining public method Dimension2D size();
The relevant doc specification, is on
http://www.digitalmars.com/d/function.html , Function Inheritance and
Overriding:
"However, when doing overload resolution, the functions in the base
class are not considered:
[...]
To consider the base class's functions in the overload resolution
process, use an AliasDeclaration:"
I'm also not sure if this is the ideal behavior.
--
Bruno Medeiros - CS/E student
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d
mailing list