What you really want to be able to do is say:

  super.determinePlacement.apply(this, arguments);

But the compiler does not (quite) support that. I spent a few minutes trying to see how hard that would be to support, and it was not just a quick fix (because of the way super is wedged in).

In most o-o languages I have used, there is a shorthand, like:

  super();

which means 'call the method I am overriding with the arguments that I got'. I suppose we can't get away with that, because C++ has co- opted that to mean call my superclass's constructor. But it sure would be convenient, since I think it is much more common to want to call the method you override and pass it all the same arguments that to want to call your superclass constructor. [In our world you call super.initialize anyways, so there is no ambiguity.]

On 2006-11-01, at 09:59 EST, Jim Grandy wrote:

This is one of those situations where nobody currently uses the parameter, but it might come in handy some day. Given that determinePlacement is optimized in the case where there are no overrides, there's not much overhead to passing it around. I agree as well.

On Nov 1, 2006, at 6:36 AM, P T Withington wrote:

I agree. When calling your super method, you should pass all the arguments that you are called with.

On 2006-10-31, at 21:36 EST, Philip Romanik wrote:

Hi Tucker,

determinePlacement() has 3 arguments but most components only mention the first two (basetabs.lzx for example) when overridden. This is a bit of a nit, but I think all references to super.determinePlacement() should pass all 3 parameters. Or, is the third parameter cruft?

Thanks!

Phil




Reply via email to