Peter N Lewis wrote:
OTOH, I would, of course, even prefer to have real, "syntax-approved" method variables that also take into account polymorphy and the fact that methods might be overridden.
I'm afraid I can't understand the point of this, why not just use an indirecting procedure:
Remove the attribute names, and define
Procedure testObjFoo ( obj: pointer ); begin pTestObj(obj)^.foo; end;
That's basically what I've been doing for a couple of years now, and as far as only my own code is affected, I find it a bit annoying, but acceptable. However... well, see below.
No need to rely on the compiler implementation of anything.
Sure there is a negligible drop in efficiency, and you have to write a duplicate for any method you want to use a a procedural variable, but these hardly seem like big problems unless you have very specific requirements that make them big problems...?
The point is: I'm writing an API where I'd like to give the application developer the possibility to pass a method as an initialization parameter to the constructors of some objects. For example to an intermediate wrapper that turns rows of an SQL result set into objects and vice versa.