Thread overview
Help with Compiler Error
May 23, 2004
Brad Anderson
May 23, 2004
Mike Swieton
May 23, 2004
Brad Anderson
May 24, 2004
Brad Anderson
May 24, 2004
Mike Swieton
May 24, 2004
Brad Anderson
May 23, 2004
I'm getting an error from the compiler that I don't understand, and would appreciate any help.  The error is:

  'this' is required, but OS is not a base class of Decorations

The error is on the return OS.DefMDIChildProc() line.

decorations.d:
----------------------------
public class Decorations : Canvas {

    int callWindowProc (int msg, int wParam, int lParam) {
        return OS.DefMDIChildProc (handle, msg, wParam, lParam);
    }

}

os.d
----------------------------

class OS {

    int DefMDIChildProc (int hWnd, int Msg, int wParam, int lParam) {
        if (IsUnicode) return DefMDIChildProcW (hWnd, Msg, wParam, lParam);
        return DefMDIChildProcA (hWnd, Msg, wParam, lParam);
    }

}
May 23, 2004
On Sun, 23 May 2004 00:30:24 -0500, Brad Anderson wrote:

> I'm getting an error from the compiler that I don't understand, and would appreciate any help.  The error is:
> 
>    'this' is required, but OS is not a base class of Decorations
> 
> The error is on the return OS.DefMDIChildProc() line.
> <SNIP>

I'm betting that the error is that DefMDIChildProc is not a static method, and you're calling it in a static context. That is a particularly bad error message, though.

Mike Swieton
__
I believe you should live each day as if it is your last, which is why I don't
have any clean laundry because, come on, who wants to wash clothes on the last
day of their life?
	- Anonymous kid, aged 15 (but may as well be me!)

May 23, 2004
Making DefMDIChildProc() static in os.d didn't seem to help :(

BA

Mike Swieton wrote:

> On Sun, 23 May 2004 00:30:24 -0500, Brad Anderson wrote:
> 
> 
>>I'm getting an error from the compiler that I don't understand, and would appreciate any help.  The error is:
>>
>>   'this' is required, but OS is not a base class of Decorations
>>
>>The error is on the return OS.DefMDIChildProc() line.
>><SNIP>
> 
> 
> I'm betting that the error is that DefMDIChildProc is not a static method, and
> you're calling it in a static context. That is a particularly bad error
> message, though.
> 
> Mike Swieton
> __
> I believe you should live each day as if it is your last, which is why I don't
> have any clean laundry because, come on, who wants to wash clothes on the last
> day of their life?
> 	- Anonymous kid, aged 15 (but may as well be me!)
> 
May 24, 2004
But making the method static AND making the class static did work.

Maybe we can get a better error message from the compiler.

Thanks, Mike.

BA

Brad Anderson wrote:
> Making DefMDIChildProc() static in os.d didn't seem to help :(
> 
> BA
> 
> Mike Swieton wrote:
> 
>> On Sun, 23 May 2004 00:30:24 -0500, Brad Anderson wrote:
>>
>>
>>> I'm getting an error from the compiler that I don't understand, and would appreciate any help.  The error is:
>>>
>>>   'this' is required, but OS is not a base class of Decorations
>>>
>>> The error is on the return OS.DefMDIChildProc() line.
>>> <SNIP>
>>
>>
>>
>> I'm betting that the error is that DefMDIChildProc is not a static method, and
>> you're calling it in a static context. That is a particularly bad error
>> message, though.
>>
>> Mike Swieton
>> __
>> I believe you should live each day as if it is your last, which is why I don't
>> have any clean laundry because, come on, who wants to wash clothes on the last
>> day of their life?
>>     - Anonymous kid, aged 15 (but may as well be me!)
>>
May 24, 2004
On Sun, 23 May 2004 23:36:40 -0500, Brad Anderson wrote:

> But making the method static AND making the class static did work.
> 
> Maybe we can get a better error message from the compiler.
> 
> Thanks, Mike.
> 
> BA

Ok, I'll bite: what does static mean in the context of a class?

Mike Swieton
__
If I need a screwdriver and I select a hammer, I probably won't get anywhere
and will eventually realize my error. The problem with software is that we are
able to turn a hammer into a screwdriver.
	- Laurent Bossavit

May 24, 2004
It didn't work yesterday when I only made the method static, but things began to work as I did this:

public static class OS {

    static int DefMDIChildProc() {
        ...
    }

}

It didn't make much sense to me, but I tried it.  The spec says that static is only used on functions and data.  But I couldn't get the code to work unless I added it up by class.

Now, of course, after your post questioning this, I took out the static before class and it works fine.   So I must have had something else wrong.

BA



Mike Swieton wrote:
> On Sun, 23 May 2004 23:36:40 -0500, Brad Anderson wrote:
> 
> 
>>But making the method static AND making the class static did work.
>>
>>Maybe we can get a better error message from the compiler.
>>
>>Thanks, Mike.
>>
>>BA
> 
> 
> Ok, I'll bite: what does static mean in the context of a class?
> 
> Mike Swieton
> __
> If I need a screwdriver and I select a hammer, I probably won't get anywhere
> and will eventually realize my error. The problem with software is that we are
> able to turn a hammer into a screwdriver.
> 	- Laurent Bossavit
>