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